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/11/11 14:07:18 UTC

[lucene-solr] branch reference_impl updated: @1161 Tweak up.

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 ac021ba  @1161 Tweak up.
ac021ba is described below

commit ac021ba5a728984a709ab11a31faf000d3bee5f4
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Nov 11 08:06:46 2020 -0600

    @1161 Tweak up.
---
 .../java/org/apache/solr/cloud/StatePublisher.java | 12 ++++++++++
 .../java/org/apache/solr/cloud/ZkController.java   | 28 +++++++++++++---------
 .../apache/solr/cloud/overseer/ZkStateWriter.java  |  2 +-
 .../java/org/apache/solr/core/CoreContainer.java   |  2 +-
 .../apache/solr/servlet/SolrLifcycleListener.java  |  2 +-
 .../apache/solr/servlet/SolrShutdownHandler.java   |  4 ++--
 6 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/StatePublisher.java b/solr/core/src/java/org/apache/solr/cloud/StatePublisher.java
index 3cc1f93..433db0c 100644
--- a/solr/core/src/java/org/apache/solr/cloud/StatePublisher.java
+++ b/solr/core/src/java/org/apache/solr/cloud/StatePublisher.java
@@ -33,6 +33,12 @@ import java.util.concurrent.TimeUnit;
 public class StatePublisher implements Closeable {
   private static final Logger log = LoggerFactory
       .getLogger(MethodHandles.lookup().lookupClass());
+
+  public static class NoOpMessage extends ZkNodeProps {
+  }
+
+  public static final NoOpMessage TERMINATE_OP = new NoOpMessage();
+
   private final BlockingArrayQueue<ZkNodeProps> workQueue = new BlockingArrayQueue<>(30, 10);
   private final ZkDistributedQueue overseerJobQueue;
   private volatile Worker worker;
@@ -55,6 +61,9 @@ public class StatePublisher implements Closeable {
           message = workQueue.poll(5, TimeUnit.SECONDS);
           if (message != null) {
             log.info("Got state message " + message);
+            if (message == TERMINATE_OP) {
+              return;
+            }
 
             bulkMessage(message, bulkMessage);
 
@@ -62,6 +71,9 @@ public class StatePublisher implements Closeable {
               message = workQueue.poll(0, TimeUnit.SECONDS);
               log.info("Got state message " + message);
               if (message != null) {
+                if (message == TERMINATE_OP) {
+                  return;
+                }
                 bulkMessage(message, bulkMessage);
               }
             }
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 749e815..4d55be8 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -159,7 +159,7 @@ public class ZkController implements Closeable, Runnable {
 
   @Override
   public void run() {
-    disconnect();
+    disconnect(true);
   }
 
   public boolean isDcCalled() {
@@ -628,24 +628,26 @@ public class ZkController implements Closeable, Runnable {
     }
   }
 
-  public void disconnect() {
+  public void disconnect(boolean publishDown) {
     log.info("disconnect");
     this.dcCalled = true;
     try (ParWork closer = new ParWork(this, true, true)) {
       closer.collect( "replicateFromLeaders", replicateFromLeaders);
 
       if (getZkClient().getConnectionManager().isConnected()) {
-        closer.collect("PublishNodeAsDown&RepFromLeadersClose&RemoveEmphem", () -> {
+        if (publishDown) {
+          closer.collect("PublishNodeAsDown&RepFromLeaders", () -> {
 
-          try {
-            log.info("Publish this node as DOWN...");
-            publishNodeAsDown(getNodeName());
-          } catch (Exception e) {
-            ParWork.propagateInterrupt("Error publishing nodes as down. Continuing to close CoreContainer", e);
-          }
-          return "PublishDown";
+            try {
+              log.info("Publish this node as DOWN...");
+              publishNodeAsDown(getNodeName());
+            } catch (Exception e) {
+              ParWork.propagateInterrupt("Error publishing nodes as down. Continuing to close CoreContainer", e);
+            }
+            return "PublishDown";
 
-        });
+          });
+        }
         closer.collect("removeEphemeralLiveNode", () -> {
           try {
             removeEphemeralLiveNode();
@@ -677,6 +679,10 @@ public class ZkController implements Closeable, Runnable {
     this.shudownCalled = true;
 
     this.isClosed = true;
+
+    if (statePublisher != null) {
+      statePublisher.submitState(StatePublisher.TERMINATE_OP);
+    }
     IOUtils.closeQuietly(statePublisher);
 
     try (ParWork closer = new ParWork(this, true, true)) {
diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
index 8eb5377..0595dde 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
@@ -158,7 +158,7 @@ public class ZkStateWriter {
                 Replica replica = docColl.getReplica(core);
                 if (replica != null) {
                   if (setState.equals("leader")) {
-                    log.info("set leader {} {}", message.getStr(ZkStateReader.CORE_NAME_PROP), replica);
+                    if (log.isDebugEnabled()) log.debug("set leader {} {}", message.getStr(ZkStateReader.CORE_NAME_PROP), replica);
                     Slice slice = docColl.getSlice(replica.getSlice());
                     slice.setLeader(replica);
                     replica.setState(Replica.State.ACTIVE);
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 f2a91e7..6fb0bfb 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1004,7 +1004,7 @@ public class CoreContainer implements Closeable {
     log.info("Shutting down CoreContainer instance=" + System.identityHashCode(this));
 
     if (isZooKeeperAware() && zkSys != null && zkSys.getZkController() != null && !zkSys.getZkController().isDcCalled()) {
-      zkSys.zkController.disconnect();
+      zkSys.zkController.disconnect(false);
     }
 
     // must do before isShutDown=true
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrLifcycleListener.java b/solr/core/src/java/org/apache/solr/servlet/SolrLifcycleListener.java
index ba7f027..a78bece 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrLifcycleListener.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrLifcycleListener.java
@@ -32,7 +32,7 @@ public class SolrLifcycleListener extends AbstractLifeCycle.AbstractLifeCycleLis
   @Override
   public void lifeCycleStopping(LifeCycle event) {
     log.info("Solr is stopping, call ZkController#disconnect");
-    try (ParWork work = new ParWork(this, true)) {
+    try (ParWork work = new ParWork(this, true, true)) {
       for (Runnable run : shutdowns) {
         work.collect("shutdown", () -> run.run());
       }
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrShutdownHandler.java b/solr/core/src/java/org/apache/solr/servlet/SolrShutdownHandler.java
index affb04c..135ae71 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrShutdownHandler.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrShutdownHandler.java
@@ -69,7 +69,7 @@ public class SolrShutdownHandler extends HandlerWrapper implements Graceful {
         @Override
         public synchronized Void get() throws InterruptedException, ExecutionException {
             synchronized (SolrShutdownHandler.class) {
-                try (ParWork work = new ParWork(this)) {
+                try (ParWork work = new ParWork(this, true, true)) {
                     for (Runnable run : shutdowns) {
                         work.collect("shutdown", () -> run.run());
                     }
@@ -82,7 +82,7 @@ public class SolrShutdownHandler extends HandlerWrapper implements Graceful {
         @Override
         public synchronized Void get(long l, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
             synchronized (SolrShutdownHandler.class) {
-                try (ParWork work = new ParWork(this)) {
+                try (ParWork work = new ParWork(this, true, true)) {
                     for (Runnable run : shutdowns) {
                         work.collect("shutdown", () -> run.run());
                     }