[
https://issues.apache.org/jira/browse/JCR-3406?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13434121#comment-13434121
]
Bart van der Schans commented on JCR-3406:
------------------------------------------
The if statements seem to be part of the original implementation of JCR-623.
I'm just afraid we might create some race condition on startup. The code seems
to be designed to first trigger a sync() call before any other operations are
done which seems correct to me.
So I rather add some extra logic to the Journal.close() and/or repository
shutdown to unlock properly than removing this "safeguard".
Bart
> Journal doUnlock sometimes not called on repository shutdown
> ------------------------------------------------------------
>
> Key: JCR-3406
> URL: https://issues.apache.org/jira/browse/JCR-3406
> Project: Jackrabbit Content Repository
> Issue Type: Improvement
> Reporter: Thomas Mueller
> Assignee: Thomas Mueller
>
> When the repository is shut down, the method AbstractJournal.doUnlock(boolean
> successful) is sometimes not called. The method Journal.close is called, but
> when the journal implementation uses a reentrant lock it can't unlock because
> close is called from a different thread.
> The reason for not calling doUnlock is that ClusterNode.stop() sets the
> status to "stopped", which causes all WorkspaceUpdateChannel methods to not
> work, including updateCommitted and updateCancelled. Therefore, it is
> possible that an operation is started but never completed nor cancelled.
> To solve the issue, I found that it is enough to let updateCommitted and
> updateCancelled to complete, so that operations that are in progress can
> finish.
--
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