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

Aborting a prepared transaction must not respect maxTransactionLockMillis

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 4.1.4
    • None
    • Replication
    • None
    • Fully Compatible
    • ALL
    • Repl 2018-10-08
    • 61

    Description

      When abortActiveTransaction() is called from prepareTransaction(), it should not use maxTransactionLockMillis for its lock acquisitions, since writing the abort oplog entry must always succeed. However, this is only safe if the thread is not holding any locks, since otherwise it could self-deadlock. Thus the order of operations for abortActiveTransaction() should be:

      • Reserve oplog slot.
      • Abort storage transaction and reset locker.
      • Write abort oplog entry.

      Attachments

        Activity

          People

            tess.avitabile@mongodb.com Tess Avitabile (Inactive)
            tess.avitabile@mongodb.com Tess Avitabile (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: