You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/06/03 16:17:11 UTC
svn commit: r1489000 -
/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java
Author: stefanegli
Date: Mon Jun 3 14:17:11 2013
New Revision: 1489000
URL: http://svn.apache.org/r1489000
Log:
SLING-2895 : avoid heartbeats after deactivation
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=1489000&r1=1488999&r2=1489000&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 Mon Jun 3 14:17:11 2013
@@ -109,20 +109,29 @@ public class HeartbeatHandler implements
/** SLING-2892: remember the value of the heartbeat this instance has written the last time **/
private Calendar lastHeartbeatWritten = null;
+ /** SLING-2895: avoid heartbeats after deactivation **/
+ private boolean activated = false;
+
@Activate
- protected void activate(ComponentContext context) {
- slingId = slingSettingsService.getSlingId();
- // on activate the resetLeaderElectionId is set to true to ensure that
- // the 'leaderElectionId' property is reset on next heartbeat issuance.
- // the idea being that a node which leaves the cluster should not
- // become leader on next join - and by resetting the leaderElectionId
- // to the current time, this is ensured.
- resetLeaderElectionId = true;
+ protected synchronized void activate(ComponentContext context) {
+ synchronized(lock) {
+ slingId = slingSettingsService.getSlingId();
+ // on activate the resetLeaderElectionId is set to true to ensure that
+ // the 'leaderElectionId' property is reset on next heartbeat issuance.
+ // the idea being that a node which leaves the cluster should not
+ // become leader on next join - and by resetting the leaderElectionId
+ // to the current time, this is ensured.
+ resetLeaderElectionId = true;
+ activated = true;
+ }
}
@Deactivate
protected void deactivate() {
- scheduler.removeJob(NAME);
+ synchronized(lock) {
+ activated = false;
+ }
+ scheduler.removeJob(NAME);
}
/**
@@ -152,6 +161,11 @@ public class HeartbeatHandler implements
public void run() {
synchronized(lock) {
+ if (!activated) {
+ // SLING:2895: avoid heartbeats if not activated
+ return;
+ }
+
// issue a heartbeat
issueHeartbeat();