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

Consider making abortTransaction remember the abort if TransactionParticipant hasn't been created yet

    • Type: Icon: Improvement Improvement
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Cluster Scalability
    • 0

      Currently, the abortTranasction command just throws an error if the TransactionParticipant doesn't exist. This means that if an async abort occurs and it races before the start of the transaction, it can leave the transaction open while holding the resources (like locks) until it expires.

      This behavior has been seen in SERVER-93838 and SERVER-91604.

      If we create a new transaction participant state and set it to abort state instead of just throwing like today, then the transaction would not be able to start. However, we'll have to wait for the session reaper to remove this entry when it expires (assuming this session is never used again). I think this is better than holding transaction resources.

            Assignee:
            Unassigned Unassigned
            Reporter:
            randolph@mongodb.com Randolph Tan
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: