You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by is...@apache.org on 2023/01/17 11:26:22 UTC

[solr] branch jira/solr-16414-9_1_backport created (now 61922ec170d)

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

ishan pushed a change to branch jira/solr-16414-9_1_backport
in repository https://gitbox.apache.org/repos/asf/solr.git


      at 61922ec170d SOLR-16414: simplified code

This branch includes the following new commits:

     new 61922ec170d SOLR-16414: simplified code

The 1 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.



[solr] 01/01: SOLR-16414: simplified code

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-16414-9_1_backport
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 61922ec170d1f88081902e494eb754715a9239e2
Author: Noble Paul <no...@gmail.com>
AuthorDate: Tue Nov 8 17:22:08 2022 +1100

    SOLR-16414: simplified code
---
 .../java/org/apache/solr/cloud/ZkController.java   | 50 ++++++++--------------
 1 file changed, 19 insertions(+), 31 deletions(-)

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 6d20f57a42a..696ea7c900e 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -2937,40 +2937,28 @@ public class ZkController implements Closeable {
     } else {
       try {
         // Create a concurrently accessible set to avoid repeating collections
-        Set<String> collectionsInThisNode = new HashSet<>();
+        Set<String> processedCollections = new HashSet<>();
         for (CoreDescriptor cd : cc.getCoreDescriptors()) {
-          if (cd.getCloudDescriptor() != null
-              && cd.getCloudDescriptor().getCollectionName() != null) {
-            collectionsInThisNode.add(cd.getCloudDescriptor().getCollectionName());
+          String collName = cd.getCollectionName();
+          DocCollection coll;
+          if (collName != null
+              && processedCollections.add(collName)
+              && (coll = zkStateReader.getCollection(collName)) != null
+              && coll.isPerReplicaState()) {
+            final List<String> replicasToDown = new ArrayList<>();
+            coll.forEachReplica(
+                (s, replica) -> {
+                  if (replica.getNodeName().equals(nodeName)) {
+                    replicasToDown.add(replica.getName());
+                  }
+                });
+            PerReplicaStatesOps.downReplicas(
+                    replicasToDown,
+                    PerReplicaStatesFetcher.fetch(
+                        coll.getZNode(), zkClient, coll.getPerReplicaStates()))
+                .persist(coll.getZNode(), zkClient);
           }
         }
-        collectionsInThisNode.forEach(
-            c -> {
-              final List<String> replicasToDown = new ArrayList<>();
-              DocCollection coll = zkStateReader.getCollection(c);
-              if (coll == null) {
-                // may be the collection no more exists
-                return;
-              }
-              coll.forEachReplica(
-                  (s, r) -> {
-                    if (r.getNodeName().equals(nodeName)) {
-                      replicasToDown.add(r.getName());
-                    }
-                  });
-
-              if (!replicasToDown.isEmpty()) {
-                try {
-                  PerReplicaStatesOps.downReplicas(
-                          replicasToDown,
-                          PerReplicaStatesFetcher.fetch(
-                              coll.getZNode(), zkClient, coll.getPerReplicaStates()))
-                      .persist(coll.getZNode(), zkClient);
-                } catch (KeeperException | InterruptedException e) {
-                  throw new RuntimeException(e);
-                }
-              }
-            });
 
         // We always send a down node event to overseer to be safe, but overseer will not need to do
         // anything for PRS collections