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

Release RSTL if we choose not to commit a prepared transaction after reacquiring it

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Fixed
    • None
    • 4.2.0-rc2, 4.3.1
    • Replication
    • None
    • Fully Compatible
    • ALL
    • v4.2
    • Repl 2019-07-01
    • 21

    Description

      This is a bug when commitTransaction is being retried. A previous commitPreparedTransaction reacquires the RSTL and then fails due to a uassert. When it fails, it doesn't release the RSTL due to two phase locking, rather stashing the RSTL. A prepared transaction cannot hold the RSTL while stashed or else a deadlock with stepdown is possible. We should release the RSTL if we do not commit the prepared transaction (we can't fail but we can choose not to commit).

      Attachments

        Activity

          People

            judah.schvimer@mongodb.com Judah Schvimer
            judah.schvimer@mongodb.com Judah Schvimer
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: