jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nick Tuckett (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JCR-3246) RepositoryImpl attempts to close active session twice on shutdown
Date Thu, 19 Jul 2012 15:09:35 GMT

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

Nick Tuckett commented on JCR-3246:
-----------------------------------

FWIW I can reproduce this, but in a non-critical situation and without any custom code. I
haven't gone out of my way to do this; I came across these kind of log warnings when adding
some user management functionality to my application.

With a TransientRepository, log in with an admin session to set up the repository, then acquire
the UserManager for that session - this will create a parallel session for the security workspace,
referenced by the underlying UserManagerImpl instance. Also, the UserManagerImpl will be added
as a SessionListener to the original admin session.

Then with no other sessions active, log the admin session out - this will ultimately iterate
through its SessionListeners, calling loggedOut() on each. One such callback will be to the
TransientRepository, which will trigger the shutdown (itself logging out any remaining active
sessions). Another callback will be to the UserManagerImpl, which will attempt to log out
its security session.

It would appear that the order of these callbacks isn't guaranteed, as it can change from
run to run. If the TransientRepository callback happens first, it will log out the user manager
security session - then the UserManagerImpl callback will occur, attempting to log that session
out again, producing the kind of warning log messages described above.

                
> RepositoryImpl attempts to close active session twice on shutdown
> -----------------------------------------------------------------
>
>                 Key: JCR-3246
>                 URL: https://issues.apache.org/jira/browse/JCR-3246
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.4
>            Reporter: Jan Haderka
>            Priority: Critical
>
> On shutdown sessions are being closed twice which lead to the exception being logged
as shown below. As far as I can tell {{RepositoryImpl}} has system sessions in the list of
active sessions which is why it tries to close them twice - first time when closing all active
sessions {{(RepositoryImpl.java:1078)}} and second time when disposing workspace {{(RepositoryImpl.java:1090)}}.
> {noformat}
> 2012-02-28 10:36:00,614 WARN  org.apache.jackrabbit.core.session.SessionState   : Attempt
to close session-31 after it has already been closed. Please review your code for proper session
management.
> java.lang.Exception: Stack trace of the duplicate attempt to close session-31
> 	at org.apache.jackrabbit.core.session.SessionState.close(SessionState.java:280)
> 	at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:943)
> 	at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:392)
> 	at org.apache.jackrabbit.core.security.user.UserManagerImpl.loggedOut(UserManagerImpl.java:1115)
> 	at org.apache.jackrabbit.core.SessionImpl.notifyLoggedOut(SessionImpl.java:565)
> 	at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:979)
> 	at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.doDispose(RepositoryImpl.java:2200)
> 	at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.dispose(RepositoryImpl.java:2154)
> 	at org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java:1090)
> 	at org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:1041)
> 	at org.apache.jackrabbit.core.jndi.BindableRepository.shutdown(BindableRepository.java:259)
> 	at org.apache.jackrabbit.core.jndi.RegistryHelper.unregisterRepository(RegistryHelper.java:94)
>        ...
> 2012-02-28 10:36:00,617 WARN  org.apache.jackrabbit.core.session.SessionState   : session-31
has already been closed. See the attached exception for a trace of where this session was
closed.
> java.lang.Exception: Stack trace of  where session-31 was originally closed
> 	at org.apache.jackrabbit.core.session.SessionState.close(SessionState.java:275)
> 	at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:943)
> 	at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:392)
> 	at org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java:1078)
> 	at org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:1041)
> 	at org.apache.jackrabbit.core.jndi.BindableRepository.shutdown(BindableRepository.java:259)
> 	at org.apache.jackrabbit.core.jndi.RegistryHelper.unregisterRepository(RegistryHelper.java:94)
>        ...
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message