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

Test-only "sbe" command must hold an AutoGet object

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.1.0-rc0
    • Component/s: None
    • Labels:
    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Backport Requested:
      v5.0
    • Sprint:
      Query Execution 2021-06-28, Query Execution 2021-07-12
    • Linked BF Score:
      20

      Description

      The test-only "sbe" command is a way to directly execute an SBE plan. The query is described using a string language of the SBE plan, which is parsed in order to construct the SBE tree. Use of this command requires that the enableTestCommands setParameter is set to true.

      This command has been implemented incorrectly ever since we changed the SBE engine to use the external locking policy in SERVER-55658. Prior to this change, callers using a PlanExecutor for an SBE plan did not need to hold an AutoGet object. After this change, the caller is responsible for acquiring the AutoGet. However, the SBE command does not do so.

      This could theoretically lead to a host of symptoms. The jstestfuzz suite, however, has picked up on this by running an SBE command around the same time that a collection used by the SBE command is being dropped. This can result in the failure of this tassert().

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              david.storch David Storch
              Reporter:
              david.storch David Storch
              Participants:
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: