You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2011/09/21 14:01:25 UTC
svn commit: r1173579 -
/jackrabbit/branches/JCR-2272/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
Author: jukka
Date: Wed Sep 21 12:01:24 2011
New Revision: 1173579
URL: http://svn.apache.org/viewvc?rev=1173579&view=rev
Log:
JCR-2272: Errors during concurrent session import of nodes with same
Move the cluster update to the finally block to avoid locking the entire cluster if an unexpected exception gets thrown.
Modified:
jackrabbit/branches/JCR-2272/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
Modified: jackrabbit/branches/JCR-2272/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/JCR-2272/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java?rev=1173579&r1=1173578&r2=1173579&view=diff
==============================================================================
--- jackrabbit/branches/JCR-2272/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (original)
+++ jackrabbit/branches/JCR-2272/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java Wed Sep 21 12:01:24 2011
@@ -799,11 +799,15 @@ public class SharedItemStateManager
/* dispatch the events */
events.dispatch();
-
- // let listener know about finished operation
- String path = events.getSession().getUserID() + "@" + events.getCommonPath();
- eventChannel.updateCommitted(this, path);
} finally {
+ // Let listener know about finished operation. This needs
+ // to happen in the finally block so that the cluster lock
+ // always gets released, even if a post-store() exception
+ // is thrown from the code above. See also JCR-2272.
+ String path = events.getSession().getUserID()
+ + "@" + events.getCommonPath();
+ eventChannel.updateCommitted(this, path);
+
if (writeLock != null) {
// exception occurred before downgrading lock
writeLock.release();