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 00:48:18 UTC

[lucene-solr] 02/03: @1153 Fix up setting leader state.

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 ecb4bcf937df813200a140aed8e7bd5e19fa6586
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Nov 10 18:32:13 2020 -0600

    @1153 Fix up setting leader state.
---
 .../java/org/apache/solr/cloud/overseer/ZkStateWriter.java    |  7 +++++--
 .../src/java/org/apache/solr/common/cloud/ZkStateReader.java  | 11 ++++-------
 2 files changed, 9 insertions(+), 9 deletions(-)

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 28c82ae..eeaecaf 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
@@ -142,6 +142,7 @@ public class ZkStateWriter {
                 currentSlice.setState(slice.getState());
                 currentSlice.setLeader(slice.getLeader());
                 currentSlice.getLeader().getProperties().put("leader", "true");
+                currentSlice.getLeader().getProperties().put("state", Replica.State.ACTIVE.toString());
                 changed.set(true);
               }
             }
@@ -151,8 +152,9 @@ public class ZkStateWriter {
                 if (log.isDebugEnabled()) log.debug("set replica state to {} isLeader={}", replica.getState(), replica.getProperty("leader"));
                 currentReplica.setState(replica.getState());
                 String leader = replica.getProperty("leader");
-                if (leader != null) {
-                  currentReplica.getProperties().put("leader", leader);
+                if (leader != null || slice.getLeader() != null && replica.getName().equals(slice.getLeader().getName())) {
+                  currentReplica.getProperties().put("leader", "true");
+                  currentReplica.getProperties().put("state", Replica.State.ACTIVE.toString());
                 }
                 // nocommit
                 //              else if (leader == null) {
@@ -161,6 +163,7 @@ public class ZkStateWriter {
 
                 if (slice.getLeader() != null && slice.getLeader().getName().equals(replica.getName())) {
                   currentReplica.getProperties().put("leader", "true");
+                  currentReplica.getProperties().put("state", Replica.State.ACTIVE.toString());
                 }
 
                 Replica thereplica = cs.getCollectionOrNull(newCollection.getName()).getReplica(replica.getName());
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index a00ce0a..2faa060 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -919,14 +919,11 @@ public class ZkStateReader implements SolrCloseable, Replica.NodeNameToBaseUrl {
           return false;
         Slice slice = c.getSlice(shard);
         if (slice == null) return false;
-        for (Replica replica : slice.getReplicas()) {
-          String leader = replica.getProperty("leader");
-          if (leader != null && leader.equals("true") && replica.getState() == Replica.State.ACTIVE) {
-            returnLeader.set(replica);
-            return true;
-          }
+        Replica leader = slice.getLeader();
+        if (leader != null && leader.getState() == Replica.State.ACTIVE) {
+          returnLeader.set(leader);
+          return true;
         }
-
         return false;
       });
     } catch (TimeoutException e) {