Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-94849

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

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

      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@mongodb.com Kevin Cherkauer
            Reporter:
            kevin.cherkauer@mongodb.com Kevin Cherkauer
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: