Add getMore kill-and-resume seam for featureFlagChangeStreamOptimizedUpdateLookup

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Execution
    • QE 2026-06-22, QE 2026-07-06
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Summary

      Make the optimized updateLookup path safely disablable on a live cursor. When
      featureFlagChangeStreamOptimizedUpdateLookup is turned off, any cursor still on the optimized
      path is killed at its next getMore and the stream resumes on the legacy Aggregation path.

      Scope

      • Add a getMore precondition seam in getmore_cmd.cpp, mirroring the existing change-stream
        readPreference enforcement check, that detects a cursor on the optimized path while the flag is
        now off and surfaces a resumable error (kill-and-resume).
      • New cursors observe the current flag value at construction (handled by the factory gate in the
        Express-wiring ticket); this ticket covers the transition for already-open cursors.

      Files

      • src/mongo/db/commands/query_cmd/getmore_cmd.cpp

      Acceptance criteria

      • A noPassthrough jstest opens an optimized change stream, turns the flag off, and asserts the
        next getMore kills the cursor and the stream resumes on the legacy Aggregation path.
      • The test also asserts new cursors track the current flag value.

      Dependencies

      Depends on SERVER-117887 and SERVER-128414 (Express wiring) – there must be an optimized
      path to retire.

            Assignee:
            Denis Grebennicov
            Reporter:
            Denis Grebennicov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: