[infinispan-issues] [JBoss JIRA] Created: (ISPN-879) Stale locks held when transactions are aborted by a transaction manager
Manik Surtani (JIRA)
jira-events at lists.jboss.org
Mon Jan 17 11:31:49 EST 2011
Stale locks held when transactions are aborted by a transaction manager
-----------------------------------------------------------------------
Key: ISPN-879
URL: https://issues.jboss.org/browse/ISPN-879
Project: Infinispan
Issue Type: Bug
Components: Locking and Concurrency, Transactions
Affects Versions: 4.2.0.Final
Reporter: Manik Surtani
Assignee: Manik Surtani
Priority: Blocker
Fix For: 4.2.1.Final
This is an issue with the way the LockManager attempts to acquire locks. The crux of the problem is that when the LM waits on a lock that is already held, while within the context of a transaction, the transaction manager may decide to abort that transaction. This could be for various reasons, including a transaction timing out. Typically this would involve the transaction manager calling XAResource.end() followed by XAResource.rollback(). Unfortunately, this will almost always happen on a separate maintenance thread, and when the transaction is cleaned up, the user's original thread - still waiting for a lock - is not notified. But the transaction is rolled back and as far as the transaction manager is concerned, all is well.
Subsequently, when the lock is released, the original thread waiting on the lock acquires the lock, and continues. However this transaction never completes since it has already "rolled back", leaving a stale lock in the system.
The solution is after a lock is acquired, always check if it is in a transactional context and that the transaction is valid; if not, release the lock and throw an exception.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the infinispan-issues
mailing list