#4169 Collection does not exist when drop partition and count entities concurrently (#4175)

Signed-off-by: yhmo <yihua.mo@zilliz.com>
pull/4178/head
groot 2020-11-04 18:55:13 +08:00 committed by GitHub
parent 001c8513fe
commit 124d914bb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 3 additions and 24 deletions

View File

@ -2532,7 +2532,7 @@ DBImpl::GetCollectionRowCountRecursively(const std::string& collection_id, uint6
status = meta_ptr_->ShowPartitions(collection_id, partition_array);
for (auto& schema : partition_array) {
uint64_t partition_row_count = 0;
status = GetCollectionRowCountRecursively(schema.collection_id_, partition_row_count);
status = meta_ptr_->Count(schema.collection_id_, partition_row_count);
fiu_do_on("DBImpl.GetCollectionRowCountRecursively.fail_get_collection_rowcount_for_partition",
status = Status(DB_ERROR, ""));
if (!status.ok()) {

View File

@ -2752,14 +2752,6 @@ MySQLMetaImpl::Count(const std::string& collection_id, uint64_t& result) {
try {
server::MetricCollector metric;
CollectionSchema collection_schema;
collection_schema.collection_id_ = collection_id;
auto status = DescribeCollection(collection_schema);
if (!status.ok()) {
return status;
}
mysqlpp::StoreQueryResult res;
{
mysqlpp::ScopedConnection connectionPtr(*mysql_connection_pool_, safe_grab_);

View File

@ -2391,14 +2391,6 @@ SqliteMetaImpl::Count(const std::string& collection_id, uint64_t& result) {
fiu_do_on("SqliteMetaImpl.Count.throw_exception", throw std::exception());
server::MetricCollector metric;
CollectionSchema collection_schema;
collection_schema.collection_id_ = collection_id;
auto status = DescribeCollection(collection_schema);
if (!status.ok()) {
return status;
}
std::string statement = "SELECT row_count FROM " + std::string(META_TABLEFILES)
+ " WHERE table_id = " + Quote(collection_id)
+ " AND (file_type = " + std::to_string(SegmentSchema::RAW)
@ -2409,7 +2401,7 @@ SqliteMetaImpl::Count(const std::string& collection_id, uint64_t& result) {
std::lock_guard<std::mutex> meta_lock(operation_mutex_);
AttrsMapList res;
status = SqlQuery(statement, &res);
auto status = SqlQuery(statement, &res);
if (!status.ok()) {
return status;
}

View File

@ -330,7 +330,7 @@ TEST_F(MetaTest, FAILED_TEST) {
{
uint64_t count;
status = impl_->Count("notexist", count);
ASSERT_EQ(status.code(), milvus::DB_NOT_FOUND);
ASSERT_EQ(count, 0);
FIU_ENABLE_FIU("SqliteMetaImpl.Count.throw_exception");
status = impl_->Count("notexist", count);

View File

@ -187,11 +187,6 @@ TEST_F(MySqlMetaTest, COLLECTION_FILE_TEST) {
// ASSERT_TRUE(status.ok());
// ASSERT_EQ(cnt, 0UL);
FIU_ENABLE_FIU("MySQLMetaImpl.DescribeCollection.throw_exception");
status = impl_->Count(collection_id, cnt);
ASSERT_FALSE(status.ok());
fiu_disable("MySQLMetaImpl.DescribeCollection.throw_exception");
FIU_ENABLE_FIU("MySQLMetaImpl.Count.null_connection");
status = impl_->Count(collection_id, cnt);
ASSERT_FALSE(status.ok());