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

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

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 5.1.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • Fully Compatible
    • ALL
    • v5.0
    • Query Execution 2021-06-28, Query Execution 2021-07-12
    • 20

      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().

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

              Created:
              Updated:
              Resolved: