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