-
Type:
Engineering Test
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
None
-
None
-
None
-
None
-
None
-
None
-
None
With the resumable PDIB write-side tickets, each phase persists a ResumeIndexInfo record to the replicated internal-indexBuild-<UUID> table at distinct points:
SERVER-124387: end of collection scanSERVER-124389: periodically during collection scanSERVER-124388: end of load phase- SERVER-124390: periodically during load phase
SERVER-124391: beginning of drain phaseSERVER-124458: when merging spills before deleting old ranges
Each ticket covers its case with unit tests in multi_index_block_test.cpp. To avoid one thin jstest per ticket, we want a jstest that tests all these phases.
Goal
Add a single jstest under the no_passthrough_primary_driven_index_builds suite that drives a PDIB index build through every phase, pauses at each known persist point
via the relevant fail point, and asserts that:
- The replicated internal-indexBuild-<UUID> table exists on the primary.
- The same table exists on the secondary with byte-identical contents (kReplicate path).
- The record parses as ResumeIndexInfo with the expected phase and collectionUUID.
- For phases that should include them: ranges populated, sorter idents match, current offsets advance between consecutive periodic writes.
- On commit/abort, the table is dropped on every node.
Fail points to use
- hangAfterIndexBuildDumpsInsertsFromBulk — between bulk load and drain
- hangAfterIndexBuildFirstDrain — after first drain returns
- hangs added during the load phase by SERVER-124390 and during the scan phase by
SERVER-124389(if any new fail points are introduced for the periodic writes)
Notes
- Consider whether SERVER-125008's resume-on-step-up jstest already exercises the write end-to-end (resume cannot succeed unless the write was correct). If so, this
ticket can be closed as superseded. - Test should be in jstests/noPassthrough/index_builds/ and tagged requires_persistence, requires_replication.
Acceptance criteria
- New jstest passes under no_passthrough_primary_driven_index_builds.
- Each persist point has at least one assertion in the test.
- Both primary and secondary verified.
- is related to
-
SERVER-124390 Write PDIB resume info periodically during load phase
-
- In Code Review
-
-
SERVER-125008 Resume primary-driven index build in drain phase
-
- In Progress
-
-
SERVER-124387 Write PDIB resume info at the end of collection scan phase
-
- Closed
-
-
SERVER-124388 Write PDIB resume info at the end of load phase
-
- Closed
-
-
SERVER-124389 Write PDIB resume info periodically during collection scan phase
-
- Closed
-
-
SERVER-124391 Write PDIB resume info at the beginning of drain phase
-
- Closed
-
-
SERVER-124458 Write PDIB resume info when merging spills before deleting old ranges
-
- Closed
-