You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:28:03 UTC

[sling-org-apache-sling-discovery-oak] 06/10: SLING-5286 : re-activate fast topology change propagation

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.discovery.oak-1.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-oak.git

commit 149589039bc8cb3c11348020ceb85eecddae4043
Author: Stefan Egli <st...@apache.org>
AuthorDate: Mon Nov 9 16:59:33 2015 +0000

    SLING-5286 : re-activate fast topology change propagation
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/oak@1713478 13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/discovery/oak/OakDiscoveryService.java      | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/sling/discovery/oak/OakDiscoveryService.java b/src/main/java/org/apache/sling/discovery/oak/OakDiscoveryService.java
index 49677c9..2beab3b 100644
--- a/src/main/java/org/apache/sling/discovery/oak/OakDiscoveryService.java
+++ b/src/main/java/org/apache/sling/discovery/oak/OakDiscoveryService.java
@@ -49,13 +49,14 @@ import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.discovery.DiscoveryService;
 import org.apache.sling.discovery.InstanceDescription;
 import org.apache.sling.discovery.PropertyProvider;
+import org.apache.sling.discovery.TopologyEvent;
+import org.apache.sling.discovery.TopologyEvent.Type;
 import org.apache.sling.discovery.TopologyEventListener;
 import org.apache.sling.discovery.base.commons.BaseDiscoveryService;
 import org.apache.sling.discovery.base.commons.ClusterViewService;
 import org.apache.sling.discovery.base.commons.DefaultTopologyView;
 import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegistry;
 import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistry;
-import org.apache.sling.discovery.commons.providers.BaseTopologyView;
 import org.apache.sling.discovery.commons.providers.DefaultClusterView;
 import org.apache.sling.discovery.commons.providers.DefaultInstanceDescription;
 import org.apache.sling.discovery.commons.providers.ViewStateManager;
@@ -149,6 +150,18 @@ public class OakDiscoveryService extends BaseDiscoveryService {
     
     private final List<TopologyEventListener> pendingListeners = new LinkedList<TopologyEventListener>();
     
+    private TopologyEventListener changePropagationListener = new TopologyEventListener() {
+
+        public void handleTopologyEvent(TopologyEvent event) {
+            OakViewChecker checker = oakViewChecker;
+            if (activated && checker != null 
+                    && (event.getType() == Type.TOPOLOGY_CHANGED || event.getType() == Type.PROPERTIES_CHANGED)) {
+                logger.info("changePropagationListener.handleTopologyEvent: topology changed - propagate through connectors");
+                checker.triggerAsyncConnectorPing();
+            }
+        }
+    };
+
     public static OakDiscoveryService testConstructor(SlingSettingsService settingsService,
             AnnouncementRegistry announcementRegistry,
             ConnectorRegistry connectorRegistry,
@@ -276,6 +289,8 @@ public class OakDiscoveryService extends BaseDiscoveryService {
                 viewStateManager.bind(listener);
             }
             pendingListeners.clear();
+            
+            viewStateManager.bind(changePropagationListener);
         } finally {
             if (viewStateManagerLock!=null) {
                 viewStateManagerLock.unlock();
@@ -308,6 +323,8 @@ public class OakDiscoveryService extends BaseDiscoveryService {
         logger.debug("OakDiscoveryService deactivated.");
         viewStateManagerLock.lock();
         try{
+            viewStateManager.unbind(changePropagationListener);
+
             viewStateManager.handleDeactivated();
             
             activated = false;

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.