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

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

commit ac39af55c6ea24b2e89b74bd4fcb1af801e822c8
Author: Stefan Egli <[email protected]>
AuthorDate: Wed Nov 4 10:37:59 2015 +0000

    SLING-5256 : change in localClusterSyncTokenId should always trigger a 
TOPOLOGY_CHANGED - ensured by adjusting 
ViewStateManager.onlyDiffersInProperties and 
DefaultTopologyView.compareTopology accordingly including new tests for both - 
plus added OakDiscoveryServiceTest.testDescriptorSeqNumChange to verify that 
discovery.oak now properly detects otherwise-equal topologies when their 
sequence_number==localClusterSyncTokenId differs (unlikely to happen under 
normal load situations though)
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/base@1712527
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../base/commons/DefaultTopologyView.java          |  6 ++++
 .../base/commons/DefaultTopologyViewTest.java      | 40 ++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git 
a/src/main/java/org/apache/sling/discovery/base/commons/DefaultTopologyView.java
 
b/src/main/java/org/apache/sling/discovery/base/commons/DefaultTopologyView.java
index 653e6d8..a85c20b 100644
--- 
a/src/main/java/org/apache/sling/discovery/base/commons/DefaultTopologyView.java
+++ 
b/src/main/java/org/apache/sling/discovery/base/commons/DefaultTopologyView.java
@@ -68,6 +68,12 @@ public class DefaultTopologyView extends BaseTopologyView {
         if (other == null) {
             throw new IllegalArgumentException("other must not be null");
         }
+        if ((localClusterSyncTokenId == null && other.localClusterSyncTokenId 
!= null)
+                || (other.localClusterSyncTokenId == null && 
localClusterSyncTokenId != null)
+                || (localClusterSyncTokenId != null && 
!localClusterSyncTokenId.equals(other.localClusterSyncTokenId))) {
+            logger.debug("compareTopology: different localClusterSyncTokenId");
+            return Type.TOPOLOGY_CHANGED;
+        }
         if (this.instances.size() != other.instances.size()) {
                logger.debug("compareTopology: different number of instances");
             return Type.TOPOLOGY_CHANGED;
diff --git 
a/src/test/java/org/apache/sling/discovery/base/commons/DefaultTopologyViewTest.java
 
b/src/test/java/org/apache/sling/discovery/base/commons/DefaultTopologyViewTest.java
index 27446f3..0082844 100644
--- 
a/src/test/java/org/apache/sling/discovery/base/commons/DefaultTopologyViewTest.java
+++ 
b/src/test/java/org/apache/sling/discovery/base/commons/DefaultTopologyViewTest.java
@@ -31,10 +31,12 @@ import java.util.UUID;
 
 import org.apache.sling.discovery.InstanceDescription;
 import org.apache.sling.discovery.InstanceFilter;
+import org.apache.sling.discovery.TopologyEvent;
 import org.apache.sling.discovery.TopologyEvent.Type;
 import org.apache.sling.discovery.base.its.setup.TopologyHelper;
 import org.apache.sling.discovery.commons.providers.DefaultClusterView;
 import org.apache.sling.discovery.commons.providers.DefaultInstanceDescription;
+import org.apache.sling.discovery.commons.providers.spi.LocalClusterView;
 import org.junit.Test;
 
 import junitx.util.PrivateAccessor;
@@ -74,6 +76,44 @@ public class DefaultTopologyViewTest {
     }
     
     @Test
+    public void testComparelocalClusterSyncTokenId() throws Exception {
+        String clusterViewId = UUID.randomUUID().toString();
+        String slingId = UUID.randomUUID().toString();
+        String syncTokenId = UUID.randomUUID().toString();
+
+        DefaultTopologyView t1 = createSingleInstanceTopology(slingId, 
clusterViewId, syncTokenId);
+        DefaultTopologyView t2 = createSingleInstanceTopology(slingId, 
clusterViewId, syncTokenId);
+
+        assertNull(t1.compareTopology(t2));
+        assertNull(t2.compareTopology(t1));
+        
+        DefaultTopologyView t3 = createSingleInstanceTopology(slingId, 
clusterViewId, UUID.randomUUID().toString());
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t1.compareTopology(t3));
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t3.compareTopology(t1));
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t2.compareTopology(t3));
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t3.compareTopology(t2));
+        
+        DefaultTopologyView t4 = createSingleInstanceTopology(slingId, 
clusterViewId, null);
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t1.compareTopology(t4));
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t4.compareTopology(t1));
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t2.compareTopology(t4));
+        assertEquals(TopologyEvent.Type.TOPOLOGY_CHANGED, 
t4.compareTopology(t2));
+
+        DefaultTopologyView t5 = createSingleInstanceTopology(slingId, 
clusterViewId, null);
+        assertNull(t5.compareTopology(t4));
+        assertNull(t4.compareTopology(t5));
+    }
+
+    private DefaultTopologyView createSingleInstanceTopology(String slingId, 
String clusterViewId, String syncTokenId) {
+        LocalClusterView clusterView = new LocalClusterView(clusterViewId, 
syncTokenId);
+        DefaultInstanceDescription instance = 
+                TopologyHelper.createInstanceDescription(slingId, true, 
clusterView);
+        DefaultTopologyView t = new DefaultTopologyView();
+        t.setLocalClusterView(clusterView);
+        return t;
+    }
+    
+    @Test
     public void testCompare() throws Exception {
 
         DefaultTopologyView newView = TopologyHelper.createTopologyView(UUID

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to