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;
   }
 
   /**