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

Move the expired transaction aborter thread off of PeriodicRunnerASIO

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Gone away
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Storage
    • Labels:
      None
    • Operating System:
      ALL
    • Sprint:
      Storage NYC 2018-05-21

      Description

      PeriodicRunnerASIO runs jobs serially and there are already jobs on it that take locks. Thus inactive transactions can block such PeriodicRunnerASIO jobs, and then the expired transaction aborter thread will never run to clear an expired transaction's lock resources, to unblock the PeriodicRunnerASIO jobs.

      While v4.0 transaction operations take only intent locks, a concurrent non-transaction operation like dropCollection that requires an exclusive X lock can block behind a transaction, and then the lock fairness policy will cause IS and IX lock requests to queue up behind the X lock request.

      So the following deadlock can occur in v4.0:
      expired transaction aborter wait on -> PeriodicRunnerASIO job waits on -> drop cmd waits on -> inactive transaction locks

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              dianna.hohensee Dianna Hohensee
              Reporter:
              dianna.hohensee Dianna Hohensee
              Participants:
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: