SBE UnwindStage, used by SBE $lookup, no longer yields

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Fixed
    • Priority: Major - P3
    • 8.1.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Execution
    • Fully Compatible
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      After discussions with anna.wawrzyniak@mongodb.com and martin.neupauer@mongodb.com, the inadvertent change described below has been deemed to have improved performance but not broken anything. Thus it is a rare case where a random mutation actually improved fitness. Therefore I am converting this ticket from a Bug to a Task and will used it just to disambiguate the method names and add more comments about yielding rules. It will not change any functionality.

      The original mutation:

      SBE PlanStage UnwindStage::getNext() - sbe/stages/unwind.cpp is currently calling a method, checkForInterrupt(), that checks for interrupts but does NOT yield.

      When this call was originally added by SERVER-72004, it DID yield.

      The ticket SERVER-81812 renamed checkForInterrupt() to checkForInterruptAndYield() but did not convert the call in UnwindStage::getNext() to the new name, then created a new method with the old name checkForInterrupt() that does NOT yield, inadvertently changing SBE UnwindStage from a yielding to a non-yielding stage.

      The ticket SERVER-72258 "Audit and add missing checkForInterrupt to SBE stages," added several checkForInterruptAndYield() calls to other stages but did not change UnwindStage.

      UnwindStage is used by SBE $lookup, which IS enabled externally. ($unwind itself is not enabled externally in SBE, but the same code is used internally by $lookup.)

      FYI martin.neupauer@mongodb.com anna.wawrzyniak@mongodb.com yoonsoo.kim parker.felix@mongodb.com schwerin@mongodb.com matt.broadstone@mongodb.com 

              Assignee:
              Kevin Cherkauer (Inactive)
              Reporter:
              Kevin Cherkauer (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: