Add jstest covering PDIB resume-state writes across all phases

XMLWordPrintableJSON

    • 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:

      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.

            Assignee:
            Unassigned
            Reporter:
            Stephanie Eristoff
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: