You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Nick Tuckett (JIRA)" <ji...@apache.org> on 2012/10/10 15:39:03 UTC

[jira] [Comment Edited] (JCR-3438) Lock tokens acquired inside a transaction do not get released when session logs out

    [ https://issues.apache.org/jira/browse/JCR-3438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13473215#comment-13473215 ] 

Nick Tuckett edited comment on JCR-3438 at 10/10/12 1:37 PM:
-------------------------------------------------------------

By UserTransaction I mean an equivalent of UserTransactionImpl.

And as for "real world", this is very definitely a real world application! To clarify, the test case does reflect the behaviour of our application across three sequential web service requests.

It may be that we're abusing Jackrabbit/JCR support for XA, however...
                
      was (Author: dozencrows):
    By UserTransaction I mean an equivalent of UserTransactionImpl.

And as for "real world", this is very definitely a real world application! It may be that we're abusing Jackrabbit/JCR support for XA, however...
                  
> 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