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 06:38:50 UTC

[lucene-solr] branch reference_impl_dev updated (30c372b -> c49e1fc)

This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a change to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


    from 30c372b  @462 Make managed schema reloading a little less whacko.
     new 118f831  @463 Cancel election after close.
     new c49e1fc  @464 Fix election.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 solr/core/src/java/org/apache/solr/cloud/Overseer.java     | 14 +++++++++++---
 .../org/apache/solr/cloud/OverseerElectionContext.java     |  2 +-
 .../apache/solr/cloud/ShardLeaderElectionContextBase.java  |  6 ++++--
 solr/core/src/java/org/apache/solr/cloud/ZkController.java |  2 ++
 .../solr/cloud/api/collections/CreateCollectionCmd.java    |  1 +
 .../java/org/apache/solr/common/cloud/SolrZkClient.java    | 11 ++++++++---
 6 files changed, 27 insertions(+), 9 deletions(-)


[lucene-solr] 02/02: @464 Fix election.

Posted by ma...@apache.org.
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 c49e1fc3eb84eea883327ded29c0890599ef0961
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;
   }
 
   /**


[lucene-solr] 01/02: @463 Cancel election after close.

Posted by ma...@apache.org.
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 118f831b6e599c3e04941c8397382ea68cc6613f
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Jul 30 01:15:03 2020 -0500

    @463 Cancel election after close.
---
 solr/core/src/java/org/apache/solr/cloud/Overseer.java | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index 075e280..2661b37 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -835,7 +835,7 @@ public class Overseer implements SolrCloseable {
     this.closeAndDone = true;
   }
   
-  public void close() {
+  public synchronized void close() {
     if (this.id != null) {
       log.info("Overseer (id={}) closing", id);
     }
@@ -847,7 +847,15 @@ public class Overseer implements SolrCloseable {
       });
       closer.addCollect("OverseerClose");
     }
-
+    if (zkController.getZkClient().isConnected()) {
+      try {
+        context.cancelElection();
+      } catch (InterruptedException e) {
+        ParWork.propegateInterrupt(e);
+      } catch (KeeperException e) {
+        log.error("Exception canceling election for overseer");
+      }
+    }
 
     assert ObjectReleaseTracker.release(this);
   }
@@ -857,7 +865,7 @@ public class Overseer implements SolrCloseable {
     return closed || zkController.getCoreContainer().isShutDown();
   }
 
-  void doClose() {
+  synchronized void doClose() {
     if (log.isDebugEnabled()) {
       log.debug("doClose() - start");
     }