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);
}