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

Add transaction information to lockInfo

    • Type: Icon: Improvement Improvement
    • Resolution: Won't Do
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Execution

      We're debugging a recent deadlock around replSetReconfig. Our hypothesis is that we have active transactions, which are holding a global IX lock, and that's blocking replSetReconfig's X lock (which seems consistent with SERVER-43242 and SERVER-32685). We have a dump of both lockInfo and currentOp while replSetReconfig was blocked, so we can confirm that replSetReconfig is waiting for a global X lock (on 4.0 – SERVER-37945 would seemingly fix this on 4.2, but that's a separate issue). However, we only see the following (repeated quite a few times) on the "granted" list:

            {
              "compatibleFirst": false,
              "convertMode": "NONE",
              "enqueueAtFront": false,
              "mode": "IX"
            },
      

      Our best guess is that these are active transactions, but it's difficult to prove that. On other locks we see "opid", "connectionId", and "desc", so we assume these aren't associated with an active op. It'd be nice if "lsid" and "txnNumber" were included as well.

            Assignee:
            backlog-server-execution [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            bartle David Bartley
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: