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

Only take the global write lock for applyOps when there are preConditions, multiple DDL commands or nested applyOps

    • Type: Icon: Task Task
    • Resolution: Won't Fix
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • v4.2
    • Execution Team 2019-11-04, Execution Team 2019-11-18

      Remove global X lock acquisition for applyOps. This is because acquiring global lock in X mode can be blocked by prepared transactions. The enqueued global X lock can block oplog queries which need the global IS lock. If these oplog queries and the data replication are needed to satisfy the prepared transaction's write concern, then the prepare transaction and replication cannot make progress. Thus a deadlock occurs.

      Alternatively, if removing global X lock is not an option, deprecate the command or make sure it won't be blocked on prepare transactions.

            Assignee:
            gregory.wlodarek@mongodb.com Gregory Wlodarek
            Reporter:
            lingzhi.deng@mongodb.com Lingzhi Deng
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: