From 7a902b51b1147aefeb5d3c913a55bbfc2945f1f7 Mon Sep 17 00:00:00 2001 From: Ling Qin Date: Thu, 18 Sep 2025 17:13:11 +0800 Subject: [PATCH 1/2] Modify test_memindex, fix lock-order-inversion --- python/restart_test/test_memidx.py | 4 ++-- src/storage/catalog/meta/block_meta_impl.cpp | 25 ++++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/python/restart_test/test_memidx.py b/python/restart_test/test_memidx.py index d8f52dbd8e..c47bd27515 100644 --- a/python/restart_test/test_memidx.py +++ b/python/restart_test/test_memidx.py @@ -539,7 +539,7 @@ def part1(infinity_obj): table_obj2.insert([{"c1": 4, "c2": [0.2, 0.1, 0.3, 0.4]} for i in range(6)]) # wait for mem index dump - time.sleep(3) + time.sleep(10) # 2 chunk indexes for each index db1_dir = data_dir + "/db_2" @@ -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; From f67433e4af658bfb6dc2504f87932cfec7298313 Mon Sep 17 00:00:00 2001 From: Ling Qin Date: Thu, 18 Sep 2025 17:27:21 +0800 Subject: [PATCH 2/2] Minor change --- python/restart_test/test_memidx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/restart_test/test_memidx.py b/python/restart_test/test_memidx.py index c47bd27515..3453c6f6b5 100644 --- a/python/restart_test/test_memidx.py +++ b/python/restart_test/test_memidx.py @@ -539,7 +539,7 @@ def part1(infinity_obj): table_obj2.insert([{"c1": 4, "c2": [0.2, 0.1, 0.3, 0.4]} for i in range(6)]) # wait for mem index dump - time.sleep(10) + time.sleep(3) # 2 chunk indexes for each index db1_dir = data_dir + "/db_2"