You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2017/10/17 10:35:10 UTC

lucene-solr:master: SOLR-11478: Solr should remove itself from live_nodes in zk immediately on shutdown

Repository: lucene-solr
Updated Branches:
  refs/heads/master 283ffef9e -> 57e976341


SOLR-11478: Solr should remove itself from live_nodes in zk immediately on shutdown


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

Branch: refs/heads/master
Commit: 57e976341b24c5f86f090c52f41ce6940f9cd6a5
Parents: 283ffef
Author: Cao Manh Dat <da...@apache.org>
Authored: Tue Oct 17 17:35:00 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Tue Oct 17 17:35:00 2017 +0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                      |  4 ++++
 .../src/java/org/apache/solr/cloud/ZkController.java  | 14 ++++++++++++++
 .../src/java/org/apache/solr/core/CoreContainer.java  |  5 +++++
 3 files changed, 23 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/57e97634/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index d7dddf4..645664c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -61,6 +61,10 @@ Optimizations
 
 * SOLR-11443: Remove the usage of workqueue for Overseer. (Cao Manh Dat, Scott Blum)
 
+Other Changes
+----------------------
+* SOLR-11478: Solr should remove itself from live_nodes in zk immediately on shutdown. (Cao Manh Dat)
+
 ==================  7.1.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/57e97634/solr/core/src/java/org/apache/solr/cloud/ZkController.java
----------------------------------------------------------------------
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 35171da..b6a88ea 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -976,6 +976,20 @@ public class ZkController {
     zkClient.multi(ops, true);
   }
 
+  public void removeEphemeralLiveNode() throws KeeperException, InterruptedException {
+    if (zkRunOnly) {
+      return;
+    }
+    String nodeName = getNodeName();
+    String nodePath = ZkStateReader.LIVE_NODES_ZKNODE + "/" + nodeName;
+    String nodeAddedPath = ZkStateReader.SOLR_AUTOSCALING_NODE_ADDED_PATH + "/" + nodeName;
+    log.info("Remove node as live in ZooKeeper:" + nodePath);
+    List<Op> ops = new ArrayList<>(2);
+    ops.add(Op.delete(nodePath, -1));
+    ops.add(Op.delete(nodeAddedPath, -1));
+    zkClient.multi(ops, true);
+  }
+
   public String getNodeName() {
     return nodeName;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/57e97634/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index b41d200..a9e815d 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -747,6 +747,11 @@ public class CoreContainer {
     if (isZooKeeperAware()) {
       cancelCoreRecoveries();
       zkSys.zkController.publishNodeAsDown(zkSys.zkController.getNodeName());
+      try {
+        zkSys.zkController.removeEphemeralLiveNode();
+      } catch (Exception e) {
+        log.warn("Error removing live node. Continuing to close CoreContainer", e);
+      }
       if (metricManager != null) {
         metricManager.closeReporters(SolrMetricManager.getRegistryName(SolrInfoBean.Group.cluster));
       }