diff --git a/python/restart_test/test_memidx.py b/python/restart_test/test_memidx.py index d8f52dbd8e..3453c6f6b5 100644 --- a/python/restart_test/test_memidx.py +++ b/python/restart_test/test_memidx.py @@ -554,7 +554,7 @@ def part1(infinity_obj): @decorator2 def part2(infinity_obj): # wait for optimize - time.sleep(3) + time.sleep(20) # new chunk index is generated after optimize for each index db1_dir = data_dir + "/db_2" diff --git a/src/storage/catalog/meta/block_meta_impl.cpp b/src/storage/catalog/meta/block_meta_impl.cpp index f3bf46a615..4708e71661 100644 --- a/src/storage/catalog/meta/block_meta_impl.cpp +++ b/src/storage/catalog/meta/block_meta_impl.cpp @@ -268,19 +268,24 @@ std::string BlockMeta::GetBlockTag(const std::string &tag) const { } std::tuple BlockMeta::GetRowCnt1() { - std::lock_guard lock(mtx_); - if (row_cnt_) { - return {*row_cnt_, Status::OK()}; + { + std::lock_guard lock(mtx_); + if (row_cnt_) { + return {*row_cnt_, Status::OK()}; + } } #if 1 TableMeeta &table_meta = segment_meta_.table_meta(); - row_cnt_ = infinity::GetBlockRowCount(&kv_instance_, - table_meta.db_id_str(), - table_meta.table_id_str(), - segment_meta_.segment_id(), - block_id_, - begin_ts_, - commit_ts_); + auto row_cnt = infinity::GetBlockRowCount(&kv_instance_, + table_meta.db_id_str(), + table_meta.table_id_str(), + segment_meta_.segment_id(), + block_id_, + begin_ts_, + commit_ts_); + + std::lock_guard lock(mtx_); + row_cnt_ = row_cnt; return {*row_cnt_, Status::OK()}; #else Status status;