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