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/15 17:28:14 UTC

[lucene-solr] branch reference_impl updated: #178 - Working on ZkController close and a bit extra on overseer pop up prevention.

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 8878962  #178 - Working on ZkController close and a bit extra on overseer pop up prevention.
8878962 is described below

commit 88789628264bf08e8626d978ae8f127472f5ec61
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Jul 15 12:27:24 2020 -0500

    #178 - Working on ZkController close and a bit extra on overseer pop up prevention.
---
 .../apache/solr/cloud/OverseerElectionContext.java |  2 +-
 .../java/org/apache/solr/cloud/ZkController.java   | 40 ++++++++++++----------
 .../src/java/org/apache/solr/common/ParWork.java   |  2 +-
 3 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
index e6979ae..6092118 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
@@ -52,7 +52,7 @@ final class OverseerElectionContext extends ShardLeaderElectionContextBase {
     super.runLeaderProcess(context, weAreReplacement, pauseBeforeStartMs);
 
     synchronized (this) {
-      if (!this.isClosed && !overseer.getZkController().getCoreContainer().isShutDown()) {
+      if (!this.isClosed && !overseer.getZkController().getCoreContainer().isShutDown() && (overseer.getUpdaterThread() == null || !overseer.getUpdaterThread().isAlive())) {
         overseer.start(id, context);
       }
     }
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 9ecfa21..1e6bcc8 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -181,7 +181,6 @@ public class ZkController implements Closeable {
 
   public final static String COLLECTION_PARAM_PREFIX = "collection.";
   public final static String CONFIGNAME_PROP = "configName";
-  private String closeStack;
 
   static class ContextKey {
 
@@ -596,28 +595,31 @@ public class ZkController implements Closeable {
    * Closes the underlying ZooKeeper client.
    */
   public void close() {
-    if (this.isClosed) {
-      throw new AssertionError(closeStack);
-    }
+    log.info("Closing ZkController");
+    assert !this.isClosed;
+
     this.isClosed = true;
-    StringBuilderWriter sw = new StringBuilderWriter(1000);
-    PrintWriter pw = new PrintWriter(sw);
-    new ObjectReleaseTracker.ObjectTrackerException(this.getClass().getName()).printStackTrace(pw);
-    this.closeStack = sw.toString();
 
     try (ParWork closer = new ParWork(this, true)) {
-      // nocommit
-      closer.add("Cleanup&Terms", collectionToTerms.values());
-      closer.add("ZkController Internals",
-              electionContexts.values(), cloudManager, sysPropsCacher, cloudSolrClient, zkStateReader, closeZkClient ? zkClient : null);
-      ElectionContext context = null;
-      if (overseerElector != null) {
-        context = overseerElector.getContext();
-      }
-      closer.add("ZkController Internals", context, overseerContexts.values() , overseer);
-    } finally {
-      assert ObjectReleaseTracker.release(this);
+      closer.collect(electionContexts.values());
+      closer.collect(cloudManager);
+      closer.collect(collectionToTerms.values());
+      closer.collect(sysPropsCacher);
+      closer.collect(cloudSolrClient);
+
+      closer.collect(zkStateReader);
+      if (closeZkClient) {
+        closer.collect(zkClient);
+      }
+      if (overseerElector != null && overseerElector.getContext() != null ) {
+        closer.collect(overseerElector.getContext());
+      }
+
+      closer.collect(overseerContexts.values());
+      closer.collect(overseer);
+      closer.addCollect("closeZkController");
     }
+    assert ObjectReleaseTracker.release(this);
   }
 
   /**
diff --git a/solr/solrj/src/java/org/apache/solr/common/ParWork.java b/solr/solrj/src/java/org/apache/solr/common/ParWork.java
index 111b3db..f90e852 100644
--- a/solr/solrj/src/java/org/apache/solr/common/ParWork.java
+++ b/solr/solrj/src/java/org/apache/solr/common/ParWork.java
@@ -689,7 +689,7 @@ public class ParWork implements Closeable {
 
       if (!handled) {
         String msg = label + " -> I do not know how to close: " + object.getClass().getName();
-        log.error(RAN_INTO_AN_ERROR_WHILE_DOING_WORK, msg);
+        log.error(msg);
         IllegalArgumentException illegal = new IllegalArgumentException(msg);
         exception.set(illegal);
       }