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

An InterruptibleLockGuard should be placed in the PlanExecutorSBE class as a private member if the use cases are expanded beyond the find/agg/getMore commands while the UninterruptibleLockGuard still exists

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 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.

            Assignee:
            backlog-server-execution [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            dianna.hohensee@mongodb.com Dianna Hohensee (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: