-
Type: Improvement
-
Resolution: Unresolved
-
Priority: 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.
- related to
-
SERVER-93838 Best effort transaction abort may cause test to hang due to abandoned transaction
- Closed