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/30 07:39:02 UTC
[lucene-solr] 14/16: @464 Fix election.
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
commit 8f72bca9fd49c16a1bdd189697da166655aec044
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Jul 30 01:38:01 2020 -0500
@464 Fix election.
---
.../java/org/apache/solr/cloud/OverseerElectionContext.java | 2 +-
.../org/apache/solr/cloud/ShardLeaderElectionContextBase.java | 6 ++++--
solr/core/src/java/org/apache/solr/cloud/ZkController.java | 2 ++
.../solr/cloud/api/collections/CreateCollectionCmd.java | 1 +
.../src/java/org/apache/solr/common/cloud/SolrZkClient.java | 11 ++++++++---
5 files changed, 16 insertions(+), 6 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 453ec60..34d8365 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerElectionContext.java
@@ -73,7 +73,7 @@ final class OverseerElectionContext extends ShardLeaderElectionContextBase {
@Override
public void cancelElection() throws InterruptedException, KeeperException {
- if (!zkClient.isConnected() || zkClient.isClosed()) {
+ if (!zkClient.isConnected()) {
log.info("Can't cancel, zkClient is not connected");
return;
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
index 5a8c98a..ee018e3 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
@@ -67,7 +67,7 @@ class ShardLeaderElectionContextBase extends ElectionContext {
@Override
public void cancelElection() throws InterruptedException, KeeperException {
- if (!zkClient.isConnected() || zkClient.isClosed()) {
+ if (!zkClient.isConnected()) {
log.info("Can't cancel, zkClient is not connected");
return;
}
@@ -150,12 +150,14 @@ class ShardLeaderElectionContextBase extends ElectionContext {
List<OpResult> results;
results = zkClient.multi(ops);
+ log.info("Results from call {}", results);
Iterator<Op> it = ops.iterator();
for (OpResult result : results) {
if (result.getType() == ZooDefs.OpCode.setData) {
SetDataResult dresult = (SetDataResult) result;
Stat stat = dresult.getStat();
leaderZkNodeParentVersion = stat.getVersion();
+ log.info("Got leaderZkNodeParentVersion {}", leaderZkNodeParentVersion);
}
if (result.getType() == ZooDefs.OpCode.error) {
OpResult.ErrorResult dresult = (OpResult.ErrorResult) result;
@@ -165,7 +167,7 @@ class ShardLeaderElectionContextBase extends ElectionContext {
}
}
- // assert leaderZkNodeParentVersion != null;
+ // assert leaderZkNodeParentVersion != null;
} catch (Throwable t) {
ParWork.propegateInterrupt(t);
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 83c4c80..fe74022 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -861,6 +861,8 @@ public class ZkController implements Closeable {
paths.put(Overseer.OVERSEER_COLLECTION_MAP_FAILURE, null);
paths.put(Overseer.OVERSEER_ASYNC_IDS, null);
+ paths.put(Overseer.OVERSEER_ELECT, null);
+
paths.put("/autoscaling", null);
paths.put(ZkStateReader.SOLR_AUTOSCALING_CONF_PATH, emptyJson);
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java
index 5218a51..c86c035 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CreateCollectionCmd.java
@@ -187,6 +187,7 @@ public class CreateCollectionCmd implements OverseerCollectionMessageHandler.Cmd
// stateManager.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collectionName + "/leader_elect", null, CreateMode.PERSISTENT, false);
stateManager.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collectionName + "/leader_elect/" + shardName, null, CreateMode.PERSISTENT, false);
stateManager.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collectionName + "/leader_elect/" + shardName + "/election", null, CreateMode.PERSISTENT, false);
+ stateManager.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collectionName + "/leaders/" + shardName, null, CreateMode.PERSISTENT, false);
stateManager.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collectionName + "/terms/" + shardName, ZkStateReader.emptyJson, CreateMode.PERSISTENT, false);
}
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 8338cb0..82671d1 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
@@ -732,11 +732,12 @@ public class SolrZkClient implements Closeable {
public List<OpResult> multi(final Iterable<Op> ops) throws InterruptedException, KeeperException {
List<String> errors = new ArrayList<>();
List<OpResult> results;
-
+ KeeperException ex = null;
try {
ZooKeeper keeper = connManager.getKeeper();
results = keeper.multi(ops);
} catch (KeeperException e) {
+ ex = e;
results = e.getResults();
}
@@ -752,9 +753,13 @@ public class SolrZkClient implements Closeable {
}
if (errors.size() > 0) {
log.error("Errors", errors.toString());
- return results;
+ //return results;
+ }
+
+ if (ex != null) {
+ throw ex;
}
- return Collections.emptyList();
+ return results;
}
/**