Nick Tuckett created JCR-3438:
---------------------------------
Summary: Lock tokens acquired inside a transaction do not get
released when session logs out
Key: JCR-3438
URL: https://issues.apache.org/jira/browse/JCR-3438
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: jackrabbit-core
Affects Versions: 2.4.2
Reporter: Nick Tuckett
Attachments: LockTokenTransactionTest.java
When outside a transaction, LockManager.addLockToken() calls
org.apache.jackrabbit.core.lock.LockManagerImpl.addLockToken(). This sets the
lock holder, and if the LockInfo object is actually an InternalLockInfo object,
it adds that object as a session listener. This means that the LockInfo object
is notified when the session is logging out, whereupon it causes the session to
release the lock token.
When adding a lock token inside a transaction, the underlying implementation
calls org.apache.jackrabbit.core.lock.XAEnvironment.addLockToken(). This sets
the lock holder on the LockInfo object but does not add it as a session
listener. Consequently the lock token remains owned by the session, even when
the session finishes logging out.
Subsequent attempts to get the lock token in other sessions using the same
credentials then fail.
--
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