-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Checkpoints, Test Python
-
None
-
Storage Engines, Storage Engines - Persistence
-
160.53
-
SE Persistence backlog
-
None
Issue Summary
test_key_provider_disagg02 nominally covers the three key rotation checkpoint crash points (before_key_rotation, during_key_rotation, after_key_rotation), but it cannot detect whether any of them fire. Replacing all three trigger comparisons in src/conn/conn_layered_page_log.c with a comparison that never matches leaves the test passing 6/6.
Context
Two reasons, both in the test:
* The subprocess exit status is discarded: [ignore_result, new_home_dir] = self.run_subprocess_function(...).
* run_subprocess_function is called without a scenario, so the child runs the whole scenario list, crashes in the first one, and no other crash point is ever reached. All six parent scenarios end up exercising pull/before_key_rotation.
The only post-crash check, validate_turtle_page, asserts the turtle's newest entry references the main KEK page at the expected version, which also holds for a cleanly shut down database.
Proposed Solution
* Assert the subprocess was killed, reusing the portable assert_crashed helper from test_checkpoint_crash01 ([WT-18392]): -SIGKILL on POSIX, merely non-zero on Windows, since __wt_debug_crash kills the process on POSIX and aborts on Windows.
* Pass scenario=self.scenario_number to run_subprocess_function so each scenario exercises its own crash point.
No outcome assertion is added for these three points: __wt_disagg_put_crypt_helper is called both after the metadata sync and from inside __checkpoint_tree before the commit, so they have no single position relative to the checkpoint transaction commit.
Definition of Done
* test_key_provider_disagg02 passes 6/6 unmodified.
* Neutralising all three crash points fails all six scenarios.
* Neutralising only after_key_rotation fails exactly the two after_key_rotation scenarios.
- is related to
-
WT-18412 Harden test_bug018 and test_schema09 against a simulated failure that never fires
-
- Closed
-