From 914948761d5b2a20dc3742643fd04733ebc54971 Mon Sep 17 00:00:00 2001 From: JaySon-Huang Date: Wed, 10 Jun 2026 22:17:51 +0800 Subject: [PATCH 1/2] test: fix flaky DisaggReadSnapshot by skipping background tasks during setup skip_check_segment_update prevents write() from scheduling background flush/merge tasks, avoiding a race where background placeDeltaIndex or merge delta holds is_updating and causes mergeDeltaAll() to fail silently, resulting in 5 persisted column files instead of the expected 4. Close #10897. --- .../Storages/DeltaMerge/tests/gtest_segment_read_task.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp b/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp index 0e7df372051..d5d932d0dc0 100644 --- a/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp +++ b/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp @@ -652,6 +652,14 @@ try // stable { + // skip_check_segment_update prevents write() from scheduling background + // flush/merge tasks, avoiding a race where background placeDeltaIndex or + // merge delta holds is_updating and causes mergeDeltaAll() to fail silently. + FailPointHelper::enableFailPoint(FailPoints::skip_check_segment_update); + auto fp_guard = ext::make_scope_guard([]() { + FailPointHelper::disableFailPoint(FailPoints::skip_check_segment_update); + }); + auto block = DMTestEnv::prepareSimpleWriteBlock(0, 4096, false); store->write(*db_context, db_context->getSettingsRef(), block); store->mergeDeltaAll(*db_context); From a8d4565c3c5f0ce1031d89fb594aea6f33ee2a83 Mon Sep 17 00:00:00 2001 From: JaySon-Huang Date: Wed, 10 Jun 2026 22:34:48 +0800 Subject: [PATCH 2/2] Format codes Signed-off-by: JaySon-Huang --- .../Storages/DeltaMerge/tests/gtest_segment_read_task.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp b/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp index d5d932d0dc0..7109c70d62e 100644 --- a/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp +++ b/dbms/src/Storages/DeltaMerge/tests/gtest_segment_read_task.cpp @@ -656,9 +656,8 @@ try // flush/merge tasks, avoiding a race where background placeDeltaIndex or // merge delta holds is_updating and causes mergeDeltaAll() to fail silently. FailPointHelper::enableFailPoint(FailPoints::skip_check_segment_update); - auto fp_guard = ext::make_scope_guard([]() { - FailPointHelper::disableFailPoint(FailPoints::skip_check_segment_update); - }); + auto fp_guard + = ext::make_scope_guard([]() { FailPointHelper::disableFailPoint(FailPoints::skip_check_segment_update); }); auto block = DMTestEnv::prepareSimpleWriteBlock(0, 4096, false); store->write(*db_context, db_context->getSettingsRef(), block);