Why was this pushed directly to the release branch with no additional tests?
Why is this ONLY pushed to branch_9_1 and not main or branch_9x first? https://issues.apache.org/jira/browse/SOLR-16414 was pushed to main and branch_9x. Kevin Risden On Tue, Jan 17, 2023 at 7:42 AM <is...@apache.org> wrote: > This is an automated email from the ASF dual-hosted git repository. > > ishan pushed a commit to branch branch_9_1 > in repository https://gitbox.apache.org/repos/asf/solr.git > > > The following commit(s) were added to refs/heads/branch_9_1 by this push: > new deb9e243995 SOLR-16622, SOLR-16414: simplified code / bugfix for > a node restart not working correctly > deb9e243995 is described below > > commit deb9e2439957dd42c349fc7fe2529d9fb63bd54d > Author: Ishan Chattopadhyaya <is...@searchscale.com> > AuthorDate: Tue Jan 17 18:10:01 2023 +0530 > > SOLR-16622, SOLR-16414: simplified code / bugfix for a node restart > not working correctly > --- > .../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 > >