[
https://issues.jboss.org/browse/ISPN-2081?page=com.atlassian.jira.plugin....
]
Mircea Markus commented on ISPN-2081:
-------------------------------------
This also require the following improvement, again suggested by Sebastiano Peluso:
- during the prepare, we first try to acquire a lock locally
- if this lock acquisition fails, we throw a timeout exception
- as response to the timeout exception the TransactionCoordinator triggers a rollback
- this rollback propagates to remote nodes. As the rollback also creates a transaction now
(see previous comment) this transaction will never be cleaned
- what we basically need to do is not to send a remote rollback unless required, i.e. if
this transaction went remotely
Transaction leak caused by reordering between prepare and rollback
------------------------------------------------------------------
Key: ISPN-2081
URL:
https://issues.jboss.org/browse/ISPN-2081
Project: Infinispan
Issue Type: Bug
Components: Transactions
Affects Versions: 5.1.5.FINAL
Reporter: Mircea Markus
Assignee: Mircea Markus
Priority: Critical
Labels: jdg, jdg6
Fix For: 5.2.0.CR1, 5.2.0.Final
Attachments: DistL1WriteSkewTest.txt, RollbackNotSentBeforePrepareTest.java
There's no ordering between the prepare and commit/rollback messages, as the later
are sent OOB.
With this in mind, the following transaction leak might happen:
Tx1 send prepare on nodes {A,B}
1. the message reaches A and timeouts but hasn't yet been processed on B
2. The transaction originator reacts immediately to the timeout received from A without
waiting the response from B and sends a rollback request
3. The rollback request is processed on A and B
4. The initial prepare is then processed on B
At this point we have an orphan transaction prepare on B.
Whilst this is not causing any inconsistencies, it keeps keys locked indefinitely and is
a memory leak.
The solution would be to wait at 2 for all the prepare messages *before* sending the
rollback.
Attached is a unit test to reproduce the issue.
Related mailing list thread:
http://infinispan.markmail.org/search/#query:%20list%3Aorg.jboss.lists.in...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira