-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Test Csuite
-
Storage Engines - Foundations
-
383.177
-
SE Foundations - 2026-07-21
-
5
The existing schema_abort csuite test covers schema operations under crash and recovery for ASC. This ticket adds equivalent coverage for a disaggregated leader.
Write a new csuite test modeled on schema_abort, adapted for disagg:
Workload:
- Open a WT_CONNECTION with disaggregated storage (type=layered tables).
- Run N worker threads that create and drop layered tables from a fixed URI pool, each operation assigned a value from a shared monotonically increasing schema_op_epoch counter. Each thread appends "CREATE/DROP <epoch> <uri>" to a per-thread record file on disk.
- Run a checkpoint thread that advances stable_disaggregated_schema_epoch to the current schema_op_epoch before each checkpoint, triggering WiredTiger to include all schema operations up to that epoch in the checkpoint.
- Parent process sends SIGKILL to the child after at least one checkpoint completes.
Verification:
- After recovery, query last_disaggregated_schema_epoch from the connection. This is the epoch cutoff: all schema operations at or below this value are durable; operations above it may not be.
- Replay the per-thread record files up to the cutoff. For each URI slot, find the most recent operation with epoch <= cutoff. If it was a CREATE, assert the table exists and is readable. If it was a DROP, assert the table is absent.
- For each surviving table, verify that the data row written at the latest epoch <= cutoff is present with the correct value.
Deliverables:
- New csuite test under test/csuite/schema_disagg_leader_abort/ with at minimum: main.c (parent/orchestration), workload.c (worker and checkpoint threads), verify.c (post-recovery verification).
- CMakeLists.txt entry wiring the new binary into the csuite build.
- Evergreen task entry in test/evergreen_disagg.yml running the test on the disagg build variant, including a stress variant with extended run time.
- is related to
-
WT-18013 Reentrant cursor-cache sweep frees layered stable constituent during close (use-after-free)
-
- Closed
-
-
WT-18018 Leader records stable data for unpublished tables in shared metadata (follower visibility violation)
-
- Closed
-
- related to
-
WT-18013 Reentrant cursor-cache sweep frees layered stable constituent during close (use-after-free)
-
- Closed
-
-
WT-18018 Leader records stable data for unpublished tables in shared metadata (follower visibility violation)
-
- Closed
-
-
WT-17974 Add multi-node schema abort test infrastructure — leader and follower processes
-
- Open
-
-
WT-17975 Multi-node schema abort — follower kill and crash recovery
-
- Open
-
-
WT-17976 Multi-node schema abort — leader kill and follower step-up
-
- Open
-
-
WT-17973 Add csuite test for switch-mode schema abort
-
- In Code Review
-
-
WT-18029 Validate local vs shared metadata equivalence on checkpoint pickup (strict_checkpoint_metadata)
-
- In Code Review
-
-
WT-18031 Extend disagg Python hook to publish schema ops and advance schema epoch
-
- Needs Scheduling
-