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/02/13 16:58:53 UTC

lucene-solr:master: SOLR-11899 Fix a race condition when testing removal of ephemeral nodes.

Repository: lucene-solr
Updated Branches:
  refs/heads/master dd08400a3 -> 0231d5cdb


SOLR-11899 Fix a race condition when testing removal of ephemeral nodes.


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

Branch: refs/heads/master
Commit: 0231d5cdba6b6d8747220570449abd9a1ed327c1
Parents: dd08400
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Tue Feb 13 17:57:40 2018 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Tue Feb 13 17:58:45 2018 +0100

----------------------------------------------------------------------
 .../sim/TestDistribStateManager.java            | 23 ++++++++++++++++++--
 .../solrj/impl/ZkDistribStateManager.java       |  4 ++++
 2 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0231d5cd/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestDistribStateManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestDistribStateManager.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestDistribStateManager.java
index a9c5140..be9ea34 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestDistribStateManager.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestDistribStateManager.java
@@ -82,6 +82,22 @@ public class TestDistribStateManager extends SolrTestCaseJ4 {
     LOG.info("Using " + stateManager.getClass().getName());
   }
 
+  private DistribStateManager createDistribStateManager() {
+    if (simulated) {
+      return new SimDistribStateManager(root);
+    } else {
+      SolrZkClient cli = new SolrZkClient(zkTestServer.getZkHost(), 30000);
+      return new ZkDistribStateManager(cli);
+    }
+  }
+
+  private void destroyDistribStateManager(DistribStateManager mgr) throws Exception {
+    mgr.close();
+    if (mgr instanceof ZkDistribStateManager) {
+      ((ZkDistribStateManager)mgr).getZkClient().close();
+    }
+  }
+
   @After
   public void teardown() throws Exception {
     if (solrZkClient != null) {
@@ -248,10 +264,13 @@ public class TestDistribStateManager extends SolrTestCaseJ4 {
     // watch should not fire now because it needs to be reset
     stateManager.setData("/getData/persistentData", secondData, -1);
 
+    // create ephemeral node using another ZK connection
+    DistribStateManager ephemeralMgr = createDistribStateManager();
+    ephemeralMgr.createData("/getData/ephemeralData", firstData, CreateMode.EPHEMERAL);
+
     nodeWatcher = new OnceWatcher();
-    stateManager.createData("/getData/ephemeralData", firstData, CreateMode.EPHEMERAL);
     vd = stateManager.getData("/getData/ephemeralData", nodeWatcher);
-    reInit();
+    destroyDistribStateManager(ephemeralMgr);
     if (!nodeWatcher.triggered.await(5, TimeUnit.SECONDS)) {
       fail("Node watch should have fired!");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0231d5cd/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ZkDistribStateManager.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ZkDistribStateManager.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ZkDistribStateManager.java
index b0cc710..1662d5b 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ZkDistribStateManager.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ZkDistribStateManager.java
@@ -187,4 +187,8 @@ public class ZkDistribStateManager implements DistribStateManager {
   public void close() throws IOException {
 
   }
+
+  public SolrZkClient getZkClient() {
+    return zkClient;
+  }
 }