You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/22 14:01:32 UTC

[lucene-solr] branch reference_impl updated: @294 We always have to clear live node on exists.

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

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/reference_impl by this push:
     new 4128687  @294 We always have to clear live node on exists.
4128687 is described below

commit 412868740919f8734a114ae4b729dd7f9ce924db
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Jul 22 09:00:28 2020 -0500

    @294 We always have to clear live node on exists.
---
 .../java/org/apache/solr/cloud/ZkController.java    | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 2ddf746..7cb7d15 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -479,7 +479,7 @@ public class ZkController implements Closeable {
 
 
             // we have to register as live first to pick up docs in the buffer
-            createEphemeralLiveNode(true);
+            createEphemeralLiveNode();
 
             List<CoreDescriptor> descriptors = descriptorsSupplier.get();
             // re register all descriptors
@@ -1232,7 +1232,7 @@ public class ZkController implements Closeable {
           worker.addCollect("ZkControllerInit");
         }
         // Do this last to signal we're up.
-        createEphemeralLiveNode(false);
+        createEphemeralLiveNode();
 
         //  publishAndWaitForDownStates();
       } catch (InterruptedException e) {
@@ -1379,7 +1379,7 @@ public class ZkController implements Closeable {
     return zkClient.isConnected();
   }
 
-  private void createEphemeralLiveNode(boolean deleteOnExist) {
+  private void createEphemeralLiveNode() {
 
     String nodeName = getNodeName();
     String nodePath = ZkStateReader.LIVE_NODES_ZKNODE + "/" + nodeName;
@@ -1389,10 +1389,10 @@ public class ZkController implements Closeable {
    // if (zkStateReader.getClusterState().getLiveNodes().size() == 0) {
    //   DistributedLock lock = new DistributedLock(zkClient.getSolrZooKeeper(), "/cluster_lock", zkClient.getZkACLProvider().getACLsToAdd("/cluster_lock"));
    //   try {
-        log.info("get lock for creating ephem live node");
+   ///     log.info("get lock for creating ephem live node");
  //       lock.lock();
         log.info("do create ephem live node");
-        createLiveNodeImpl(nodePath, nodeAddedPath, deleteOnExist);
+        createLiveNodeImpl(nodePath, nodeAddedPath);
 //      } finally {
 //        log.info("unlock");
 //        lock.unlock();
@@ -1402,7 +1402,7 @@ public class ZkController implements Closeable {
    // }
   }
 
-  private void createLiveNodeImpl(String nodePath, String nodeAddedPath, boolean deleteOnExist) {
+  private void createLiveNodeImpl(String nodePath, String nodeAddedPath) {
     Map<String, byte[]> dataMap = new HashMap<>(2);
     Map<String, CreateMode> createModeMap = new HashMap<>(2);
     dataMap.put(nodePath, null);
@@ -1425,12 +1425,9 @@ public class ZkController implements Closeable {
       try {
         zkClient.getSolrZooKeeper().create(nodePath, null, zkClient.getZkACLProvider().getACLsToAdd(nodePath), CreateMode.EPHEMERAL);
       } catch (KeeperException.NodeExistsException e) {
-        if (deleteOnExist) {
-          zkClient.delete(nodePath, -1);
-          zkClient.getSolrZooKeeper().create(nodePath, null, zkClient.getZkACLProvider().getACLsToAdd(nodePath), CreateMode.EPHEMERAL);
-        } else {
-          throw e;
-        }
+        log.warn("Found our ephemeral live node already exists. This must be a quick restart after a hard shutdown, removing existing live node {}", nodePath);
+        zkClient.delete(nodePath, -1);
+        zkClient.getSolrZooKeeper().create(nodePath, null, zkClient.getZkACLProvider().getACLsToAdd(nodePath), CreateMode.EPHEMERAL);
       }
     } catch (Exception e) {
       ParWork.propegateInterrupt(e);