You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2007/10/24 14:52:17 UTC

svn commit: r587882 - /jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java

Author: angela
Date: Wed Oct 24 05:52:16 2007
New Revision: 587882

URL: http://svn.apache.org/viewvc?rev=587882&view=rev
Log:
JCR-1108 JCR2SPI: error level logging when cleaning up session locks

Modified:
    jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java?rev=587882&r1=587881&r2=587882&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java Wed Oct 24 05:52:16 2007
@@ -251,7 +251,7 @@
                 try {
                     unlock(nState);
                 } catch (RepositoryException e) {
-                    log.error("Error while unlocking session scoped lock. Cleaning up local lock status.");
+                    log.warn("Error while unlocking session scoped lock. Cleaning up local lock status.");
                     // at least clean up local lock map and the locks life cycle
                     l.lockState.unlocked();
                 }
@@ -538,6 +538,12 @@
         }
 
         private void startListening() {
+            // LockState must be aware of removal of the Node.
+            lockHoldingState.addListener(this);
+
+            // in case of CacheBehaviour.OBSERVATION this lockstate can also
+            // be aware of another session removing the lock -> listen to
+            // status changes of the jcr:lockIsDeep property.
             if (cacheBehaviour == CacheBehaviour.OBSERVATION) {
                 try {
                     PropertyState ps = lockHoldingState.getPropertyState(NameConstants.JCR_LOCKISDEEP);
@@ -549,6 +555,8 @@
         }
 
         private void stopListening() {
+            lockHoldingState.removeListener(this);
+
             if (cacheBehaviour == CacheBehaviour.OBSERVATION) {
                 try {
                     if (lockHoldingState.hasPropertyName(NameConstants.JCR_LOCKISDEEP)) {
@@ -615,6 +623,7 @@
                 lockState.startListening();
             } else if (isHoldBySession()) {
                 lockMap.put(lockState.lockHoldingState, this);
+                lockState.startListening();
                 // open-scoped locks: the map entry and the lock information
                 // stored therein may become outdated if the token is transfered
                 // to another session -> info must be reloaded.