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

Aborting a prepared transaction must not respect maxTransactionLockMillis

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.1.4
    • Component/s: Replication
    • Labels:
      None

      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

            Assignee:
            tess.avitabile Tess Avitabile
            Reporter:
            tess.avitabile Tess Avitabile
            Participants:
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: