You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ie...@apache.org on 2013/02/25 07:13:50 UTC

svn commit: r1449607 - /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/LockManager.java

Author: ieb
Date: Mon Feb 25 06:13:50 2013
New Revision: 1449607

URL: http://svn.apache.org/r1449607
Log:
SLING-2749 fixed potential synchronization issues with activate and deactivate in the LockManager.

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/LockManager.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/LockManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/LockManager.java?rev=1449607&r1=1449606&r2=1449607&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/LockManager.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/jcr/LockManager.java Mon Feb 25 06:13:50 2013
@@ -134,18 +134,18 @@ public class LockManager implements Runn
         this.idNodePath = repositoryPath + '/' + Environment.APPLICATION_ID;
 
         // create the background session and register a listener
-        this.backgroundSession = this.environment.createAdminSession();
-        this.updateLastModified();
-        this.backgroundSession.getWorkspace().getObservationManager().addEventListener(this,
-                javax.jcr.observation.Event.PROPERTY_CHANGED
-                |javax.jcr.observation.Event.NODE_ADDED,
-                this.repositoryPath,
-                true,
-                null,
-                null,
-                true);
-        logger.info("Apache Sling Versioning Manager started on instance {}", Environment.APPLICATION_ID);
-        synchronized ( this.backgroundSession ) {
+        synchronized ( this.backgroundLock ) {
+            this.backgroundSession = this.environment.createAdminSession();
+            this.updateLastModified();
+            this.backgroundSession.getWorkspace().getObservationManager().addEventListener(this,
+                    javax.jcr.observation.Event.PROPERTY_CHANGED
+                    |javax.jcr.observation.Event.NODE_ADDED,
+                    this.repositoryPath,
+                    true,
+                    null,
+                    null,
+                    true);
+            logger.info("Apache Sling Versioning Manager started on instance {}", Environment.APPLICATION_ID);
             this.unlock(Environment.APPLICATION_ID);
         }
         this.scanExistingNodes();
@@ -159,8 +159,8 @@ public class LockManager implements Runn
     @Deactivate
     protected void deactivate() {
         this.running = false;
-        if ( this.backgroundSession != null ) {
-            synchronized ( this.backgroundLock ) {
+        synchronized ( this.backgroundLock ) {
+            if ( this.backgroundSession != null ) {
                 this.logger.debug("Shutting down background session.");
                 try {
                     this.backgroundSession.getWorkspace().getObservationManager().removeEventListener(this);