You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2018/05/28 15:39:53 UTC

[10/35] lucene-solr:jira/solr-11779: SOLR-12247: Ensure an event will contains newly added node

SOLR-12247: Ensure an event will contains newly added node


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/71ed5baf
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/71ed5baf
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/71ed5baf

Branch: refs/heads/jira/solr-11779
Commit: 71ed5bafac92f3dd0e8ca4388f49f2c039a8db5b
Parents: 48bd259
Author: Cao Manh Dat <da...@apache.org>
Authored: Thu May 24 09:42:17 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Thu May 24 09:42:17 2018 +0700

----------------------------------------------------------------------
 .../cloud/autoscaling/NodeAddedTriggerTest.java | 28 +++++++++-----------
 1 file changed, 13 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/71ed5baf/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java
index 183d154..a186a6c 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java
@@ -272,19 +272,20 @@ public class NodeAddedTriggerTest extends SolrCloudTestCase {
     try (NodeAddedTrigger newTrigger = new NodeAddedTrigger("node_added_trigger"))  {
       newTrigger.configure(container.getResourceLoader(), container.getZkController().getSolrCloudManager(), props);
       newTrigger.init();
-      AtomicBoolean fired = new AtomicBoolean(false);
+      AtomicBoolean stop = new AtomicBoolean(false);
       AtomicReference<TriggerEvent> eventRef = new AtomicReference<>();
       newTrigger.setProcessor(event -> {
-        if (fired.compareAndSet(false, true)) {
+        //the processor may get called 2 times, for newly added node and initial nodes
+        long currentTimeNanos = timeSource.getTimeNs();
+        long eventTimeNanos = event.getEventTime();
+        long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS;
+        if (currentTimeNanos - eventTimeNanos <= waitForNanos) {
+          fail("NodeAddedListener was fired before the configured waitFor period: currentTimeNanos=" + currentTimeNanos + ", eventTimeNanos=" +  eventTimeNanos + ",waitForNanos=" + waitForNanos);
+        }
+        List<String> nodeNames = (List<String>) event.getProperty(NodeAddedTrigger.NodeAddedEvent.NODE_NAMES);
+        if (nodeNames.contains(newNode.getNodeName())) {
+          stop.set(true);
           eventRef.set(event);
-          long currentTimeNanos = timeSource.getTimeNs();
-          long eventTimeNanos = event.getEventTime();
-          long waitForNanos = TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS) - WAIT_FOR_DELTA_NANOS;
-          if (currentTimeNanos - eventTimeNanos <= waitForNanos) {
-            fail("NodeAddedListener was fired before the configured waitFor period: currentTimeNanos=" + currentTimeNanos + ", eventTimeNanos=" +  eventTimeNanos + ",waitForNanos=" + waitForNanos);
-          }
-        } else {
-          fail("NodeAddedTrigger was fired more than once!");
         }
         return true;
       });
@@ -296,15 +297,12 @@ public class NodeAddedTriggerTest extends SolrCloudTestCase {
         if (counter++ > 10) {
           fail("Newly added node was not discovered by trigger even after 10 seconds");
         }
-      } while (!fired.get());
+      } while (!stop.get());
 
       // ensure the event was fired
-      assertTrue(fired.get());
+      assertTrue(stop.get());
       TriggerEvent nodeAddedEvent = eventRef.get();
       assertNotNull(nodeAddedEvent);
-      List<String> nodeNames = (List<String>) nodeAddedEvent.getProperty(NodeAddedTrigger.NodeAddedEvent.NODE_NAMES);
-      assertTrue("Newly added node was not present in event message",
-          nodeNames.contains(newNode.getNodeName()));
     }
   }