Author: stefanegli
Date: Fri Jul  5 12:00:54 2013
New Revision: 1499977

URL: http://svn.apache.org/r1499977
Log:
SLING-2945 : avoid deadlock in HeartbeatHandler : not using both this and lock 
as sync objects, that was not the intention, one sync object is enough and 
that's the lock object.

Modified:
    
sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java

Modified: 
sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java?rev=1499977&r1=1499976&r2=1499977&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java
 (original)
+++ 
sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java
 Fri Jul  5 12:00:54 2013
@@ -120,7 +120,7 @@ public class HeartbeatHandler implements
     private ComponentContext context;
     
     @Activate
-    protected synchronized void activate(ComponentContext context) {
+    protected void activate(ComponentContext context) {
        synchronized(lock) {
                this.context = context;
                
@@ -161,8 +161,8 @@ public class HeartbeatHandler implements
     public void initialize(final DiscoveryServiceImpl discoveryService,
             final String initialVotingId) {
         this.discoveryService = discoveryService;
-        this.nextVotingId = initialVotingId;
         synchronized(lock) {
+               this.nextVotingId = initialVotingId;
             issueHeartbeat();
         }
 
@@ -447,11 +447,9 @@ public class HeartbeatHandler implements
         // the currently live instances.
 
         // initiate a new voting
-        String votingId;
-        synchronized (this) {
-            votingId = nextVotingId;
-            nextVotingId = UUID.randomUUID().toString();
-        }
+        String votingId = nextVotingId;
+        nextVotingId = UUID.randomUUID().toString();
+
         VotingView.newVoting(resourceResolver, config, votingId, slingId, 
liveInstances);
     }
 


Reply via email to