-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
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().
- is related to
-
SERVER-55658 Out-of-order destruction of AutoGet* objects can lead to transaction closure
- Closed
-
SERVER-57096 [SBE] Nested (non-lock free) AutoGets lead to invariant failure during stepdown
- Closed