You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by va...@apache.org on 2017/12/05 22:25:40 UTC
lucene-solr:master: SOLR-11590: Synchronize ZK connect/disconnect
handling so that they are processed in linear order
Repository: lucene-solr
Updated Branches:
refs/heads/master eb434dc47 -> 2c14b9141
SOLR-11590: Synchronize ZK connect/disconnect handling so that they are processed in linear order
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2c14b914
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2c14b914
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2c14b914
Branch: refs/heads/master
Commit: 2c14b91418b45c42aba98ea2e612e9c0a53a0948
Parents: eb434dc
Author: Varun Thacker <va...@apache.org>
Authored: Tue Dec 5 13:34:50 2017 -0800
Committer: Varun Thacker <va...@apache.org>
Committed: Tue Dec 5 13:34:50 2017 -0800
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +++
.../solr/common/cloud/ConnectionManager.java | 5 ++---
.../org/apache/solr/common/cloud/SolrZkClient.java | 17 +++++++++++++++--
3 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2c14b914/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 91474eb..2f09b53 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -205,6 +205,9 @@ Bug Fixes
* SOLR-11458: Improve error handling in MoveReplicaCmd to avoid potential loss of data. (ab)
+* SOLR-11590: Synchronize ZK connect/disconnect handling so that they are processed in linear order
+ (noble, Varun Thacker)
+
Optimizations
----------------------
* SOLR-11285: Refactor autoscaling framework to avoid direct references to Zookeeper and Solr
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2c14b914/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
index 16b7fcd..98ddb47 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
@@ -43,8 +43,6 @@ public class ConnectionManager implements Watcher {
private final String zkServerAddress;
-
-
private final SolrZkClient client;
private final OnReconnect onReconnect;
@@ -118,6 +116,7 @@ public class ConnectionManager implements Watcher {
KeeperState state = event.getState();
if (state == KeeperState.SyncConnected) {
+ log.info("zkClient has connected");
connected();
connectionStrategy.connected();
} else if (state == Expired) {
@@ -179,7 +178,7 @@ public class ConnectionManager implements Watcher {
}
} while (!isClosed);
- log.info("Connected:" + connected);
+ log.info("zkClient Connected:" + connected);
} else if (state == KeeperState.Disconnected) {
log.warn("zkClient has disconnected");
disconnected();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2c14b914/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
index d502bf6..a5f303e 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
@@ -77,7 +77,10 @@ public class SolrZkClient implements Closeable {
private ZkCmdExecutor zkCmdExecutor;
- private final ExecutorService zkCallbackExecutor = ExecutorUtil.newMDCAwareCachedThreadPool(new SolrjNamedThreadFactory("zkCallback"));
+ private final ExecutorService zkCallbackExecutor =
+ ExecutorUtil.newMDCAwareCachedThreadPool(new SolrjNamedThreadFactory("zkCallback"));
+ private final ExecutorService zkConnManagerCallbackExecutor =
+ ExecutorUtil.newMDCAwareSingleThreadExecutor(new SolrjNamedThreadFactory("zkConnectionManagerCallback"));
private volatile boolean isClosed = false;
private ZkClientConnectionStrategy zkClientConnectionStrategy;
@@ -259,7 +262,11 @@ public class SolrZkClient implements Closeable {
public void process(final WatchedEvent event) {
log.debug("Submitting job to respond to event " + event);
try {
- zkCallbackExecutor.submit(() -> watcher.process(event));
+ if (watcher instanceof ConnectionManager) {
+ zkConnManagerCallbackExecutor.submit(() -> watcher.process(event));
+ } else {
+ zkCallbackExecutor.submit(() -> watcher.process(event));
+ }
} catch (RejectedExecutionException e) {
// If not a graceful shutdown
if (!isClosed()) {
@@ -680,6 +687,12 @@ public class SolrZkClient implements Closeable {
} catch (Exception e) {
SolrException.log(log, e);
}
+
+ try {
+ ExecutorUtil.shutdownAndAwaitTermination(zkConnManagerCallbackExecutor);
+ } catch (Exception e) {
+ SolrException.log(log, e);
+ }
}