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/04 16:23:00 UTC

svn commit: r1489455 - in /sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl: DiscoveryServiceImpl.java common/heartbeat/HeartbeatHandler.java

Author: stefanegli
Date: Tue Jun  4 14:22:52 2013
New Revision: 1489455

URL: http://svn.apache.org/r1489455
Log:
SLING-2901 : robust paranoia check on duplicate sling.id : sending a TOPOLOGY_CHANGING before stopping the discovery.impl bundle

Modified:
    sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/DiscoveryServiceImpl.java
    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/DiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/DiscoveryServiceImpl.java?rev=1489455&r1=1489454&r2=1489455&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/DiscoveryServiceImpl.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/DiscoveryServiceImpl.java Tue Jun  4 14:22:52 2013
@@ -637,4 +637,26 @@ public class DiscoveryServiceImpl implem
         }
     }
 
+    /** SLING-2901 : send a TOPOLOGY_CHANGING event and shutdown the service thereafter **/
+	public void forcedShutdown() {
+		synchronized(lock) {
+	        if (!activated) {
+	            logger.error("forcedShutdown: ignoring forced shutdown. Service is not activated.");
+	            return;
+	        }
+	        if (oldView == null) {
+	            logger.error("forcedShutdown: ignoring forced shutdown. No oldView available.");
+	            return;
+	        }
+	        logger.error("forcedShutdown: sending TOPOLOGY_CHANGING to all listeners");
+            for (final TopologyEventListener da : eventListeners) {
+                sendTopologyEvent(da, new TopologyEvent(Type.TOPOLOGY_CHANGING, oldView,
+                        null));
+            }
+	        logger.error("forcedShutdown: deactivating DiscoveryService.");
+	        // to make sure no further event is sent after this, flag this service as deactivated
+            activated = false;
+		}
+	}
+
 }

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=1489455&r1=1489454&r2=1489455&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 Tue Jun  4 14:22:52 2013
@@ -294,6 +294,8 @@ public class HeartbeatHandler implements
             				" with the same sling.id. My sling.id is "+slingId+", " +
     						" Check for sling.id.file in your installation of all instances in this cluster " +
     						"to verify this! Duplicate sling.ids are not allowed within a cluster!");
+            		logger.error("issueClusterLocalHeartbeat: sending TOPOLOGY_CHANGING before self-disabling.");
+            		discoveryService.forcedShutdown();
             		logger.error("issueClusterLocalHeartbeat: disabling discovery.impl");
             		activated = false;
             		if (context!=null) {