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/10/01 23:46:58 UTC

[lucene-solr] 17/26: @899 Close tweak.

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

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

commit f52f5a369e5adc54f40c751200d4fb190fe3eea0
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Oct 1 12:51:33 2020 -0500

    @899 Close tweak.
---
 .../src/java/org/apache/solr/cloud/ZkController.java     |  6 +++++-
 .../java/org/apache/solr/common/cloud/ZkStateReader.java | 16 ++++++++++++++--
 2 files changed, 19 insertions(+), 3 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 c9650dd..f8e3b2c 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -177,6 +177,7 @@ public class ZkController implements Closeable, Runnable {
   public final static String CONFIGNAME_PROP = "configName";
   private boolean shudownCalled;
   private volatile boolean dcCalled;
+  private volatile boolean started;
 
   @Override
   public void run() {
@@ -412,7 +413,10 @@ public class ZkController implements Closeable, Runnable {
     }
   }
 
-  public void start() throws KeeperException {
+  public void start() {
+    if (started) throw new IllegalStateException("Already started");
+
+    started = true;
 
     boolean isRegistered = SolrLifcycleListener.isRegistered(this);
     if (!isRegistered) {
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index 4cea90b..8e227bd 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -893,13 +893,25 @@ public class ZkStateReader implements SolrCloseable {
     log.info("Closing ZkStateReader");
     assert closeTracker.close();
     this.closed = true;
-    ExecutorUtil.shutdownAndAwaitTermination(notifications);
+    if (notifications != null) {
+      notifications.shutdown();
+    }
+
     try {
       if (closeClient) {
         IOUtils.closeQuietly(zkClient);
       }
 
-      waitLatches.forEach(c -> { for (int i = 0; i < c.getCount(); i++) c.countDown(); });
+      //waitLatches.forEach(c -> { for (int i = 0; i < c.getCount(); i++) c.countDown(); });
+
+      if (notifications != null) {
+        try {
+          boolean success = notifications.awaitTermination(3, TimeUnit.SECONDS);
+          if (!success) notifications.shutdownNow();
+        } catch (InterruptedException e) {
+          ParWork.propagateInterrupt(e);
+        }
+      }
 
     } finally {
       assert ObjectReleaseTracker.release(this);