Author: ckoell Date: Fri Aug 3 05:26:30 2012 New Revision: 1368796 URL: http://svn.apache.org/viewvc?rev=1368796&view=rev Log: JCR-3399 - Shared ISM does not release the internal Writelock if something unexpectedly is happening in externalUpdate Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java?rev=1368796&r1=1368795&r2=1368796&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java Fri Aug 3 05:26:30 2012 @@ -1521,18 +1521,18 @@ public class SharedItemStateManager boolean holdingWriteLock = false; ISMLocking.WriteLock wLock = null; - try { - wLock = acquireWriteLock(external); - holdingWriteLock = true; - - doExternalUpdate(external); - } catch (ItemStateException e) { - String msg = "Unable to acquire write lock."; - log.error(msg); - } - ISMLocking.ReadLock rLock = null; try { + try { + wLock = acquireWriteLock(external); + holdingWriteLock = true; + + doExternalUpdate(external); + } catch (ItemStateException e) { + String msg = "Unable to acquire write lock."; + log.error(msg); + } + if (wLock != null) { rLock = wLock.downgrade(); holdingWriteLock = false;