-
Type: Task
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
Storch and I were discussing the possibility of the SBE PlanExecutor being used in new code paths in a distant future. The use of a SBE PlanExecutor outside of lock-manager locks without an InterruptibleLockGuard would not be safe, if the UninterruptibleLockGuard still exists. We want to have this ticket on the backlog as documentation. We don't think it's worth proactively dealing with now. The UninterruptibleLockGuard (and InterruptibleLockGuard) may also be gone by that future time: SERVER-68868 was filed to remove it.
Work has been done in SERVER-69059, SERVER-69406 and SERVER-67424 to make sure that SBE PlanExecutors, which going forward will hold storage cursors open across find/agg/getMore commands and query yielding, are always interruptible for replication rollback. This was done by placing InterruptLockGuard instances in the find and aggregation code paths, and putting an InterruptibleLockGuard in the ClientCursorPin class to protect the getMore command case.
- is related to
-
SERVER-68868 Remove all instances of UninterruptibleLockGuard
- Blocked
- related to
-
SERVER-67424 Seek and destroy open storage cursors saved in the CursorManager across commands on rollback/shutdown (storage engine closure)
- Open
-
SERVER-69059 Create an InterruptibleLockGuard to place in ClientCursorPin to ensure read operations are interruptible
- Closed
-
SERVER-69406 Place InterruptibleLockGuards in the find and aggregation command paths
- Closed