From 37f7ef9435a12ed2bf82b363b057dbf22a23ee82 Mon Sep 17 00:00:00 2001 From: Ryoji Kurosawa Date: Wed, 22 Jan 2025 17:34:23 +0900 Subject: [PATCH] fix intermittent testcase failure by stopping gc manually --- .../scan/read_only_reverse_scan_test.cpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/test/concurrency_control/read_only_tx/scan/read_only_reverse_scan_test.cpp b/test/concurrency_control/read_only_tx/scan/read_only_reverse_scan_test.cpp index 6e0f52f0..cf8b4717 100644 --- a/test/concurrency_control/read_only_tx/scan/read_only_reverse_scan_test.cpp +++ b/test/concurrency_control/read_only_tx/scan/read_only_reverse_scan_test.cpp @@ -107,18 +107,22 @@ TEST_F(read_only_reverse_scan_test, fail_to_fetch_max_size) { // NOLINT ASSERT_EQ(Status::OK, upsert(s, st, k0, v0)); ASSERT_EQ(Status::OK, upsert(s, st, k1, v1)); ASSERT_EQ(Status::OK, commit(s)); // NOLINT - ASSERT_EQ(Status::OK, tx_begin({s, transaction_options::transaction_type::SHORT})); - ASSERT_EQ(Status::OK, delete_record(s, st, k1)); - ASSERT_EQ(Status::OK, commit(s)); // NOLINT - { - ASSERT_EQ(Status::OK, tx_begin({s, transaction_options::transaction_type::READ_ONLY})); - wait_epoch_update(); - ScanHandle hd{}; - ASSERT_EQ(Status::WARN_NOT_FOUND, open_scan(s, st, "", scan_endpoint::INF, "", scan_endpoint::INF, hd, 1, true)); + // stop gc so that k1 is left as tombstone and open_scan results in not-found + std::unique_lock lk{garbage::get_mtx_cleaner()}; + + ASSERT_EQ(Status::OK, tx_begin({s, transaction_options::transaction_type::SHORT})); + ASSERT_EQ(Status::OK, delete_record(s, st, k1)); ASSERT_EQ(Status::OK, commit(s)); // NOLINT - } + { + ASSERT_EQ(Status::OK, tx_begin({s, transaction_options::transaction_type::READ_ONLY})); + wait_epoch_update(); + ScanHandle hd{}; + ASSERT_EQ(Status::WARN_NOT_FOUND, open_scan(s, st, "", scan_endpoint::INF, "", scan_endpoint::INF, hd, 1, true)); + ASSERT_EQ(Status::OK, commit(s)); // NOLINT + } + } { // expecting waiting some epochs fix the problem wait_epoch_update();