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

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


The following commit(s) were added to refs/heads/jira/SOLR15694 by this push:
     new 751cc23  Review comments
751cc23 is described below

commit 751cc2311adcf46549d396841e76f4a429736d64
Author: Ishan Chattopadhyaya <[email protected]>
AuthorDate: Fri Jan 7 01:53:29 2022 +0530

    Review comments
---
 .../org/apache/solr/cloud/api/collections/Assign.java   |  2 +-
 .../cluster/placement/impl/PlacementRequestImpl.java    |  9 +++++++++
 .../src/java/org/apache/solr/core/CoreContainer.java    | 17 ++++++++---------
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git 
a/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java 
b/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java
index e1d145d..664bc50 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java
@@ -248,7 +248,7 @@ public class Assign {
       if (noData.isEmpty()) {
         return liveNodes;
       } else {
-        liveNodes  = new HashSet<>(liveNodes);
+        liveNodes = new HashSet<>(liveNodes);
         liveNodes.removeAll(noData);
         return liveNodes;
       }
diff --git 
a/solr/core/src/java/org/apache/solr/cluster/placement/impl/PlacementRequestImpl.java
 
b/solr/core/src/java/org/apache/solr/cluster/placement/impl/PlacementRequestImpl.java
index 5a93720..72acccd 100644
--- 
a/solr/core/src/java/org/apache/solr/cluster/placement/impl/PlacementRequestImpl.java
+++ 
b/solr/core/src/java/org/apache/solr/cluster/placement/impl/PlacementRequestImpl.java
@@ -19,6 +19,7 @@ package org.apache.solr.cluster.placement.impl;
 
 import java.util.EnumMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.solr.cloud.api.collections.Assign;
@@ -27,6 +28,8 @@ import org.apache.solr.cluster.Node;
 import org.apache.solr.cluster.Replica;
 import org.apache.solr.cluster.SolrCollection;
 import org.apache.solr.cluster.placement.PlacementRequest;
+import org.apache.solr.core.NodeRoles;
+import org.apache.solr.handler.ClusterAPI;
 
 public class PlacementRequestImpl implements PlacementRequest {
   private final SolrCollection solrCollection;
@@ -82,6 +85,12 @@ public class PlacementRequestImpl implements 
PlacementRequest {
     // If no nodes specified, use all live nodes. If nodes are specified, use 
specified list.
     if (assignRequest.nodes != null) {
       nodes = 
SimpleClusterAbstractionsImpl.NodeImpl.getNodes(assignRequest.nodes);
+
+      for (Node n: nodes) {
+        if (!cluster.getLiveDataNodes().contains(n)) {
+          throw new Assign.AssignmentException("Bad assign request: specified 
node is a non-data hosting node (" + n.getName() + ") for collection " + 
solrCollection.getName());
+        }
+      }
       if (nodes.isEmpty()) {
         throw new Assign.AssignmentException("Bad assign request: empty list 
of nodes for collection " + solrCollection.getName());
       }
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java 
b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index b915330..a880035 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -947,18 +947,17 @@ public class CoreContainer {
       });
 
       clusterSingletons.setReady();
-      if 
(NodeRoles.MODE_PREFERRED.equals(nodeRoles.getRoleMode(NodeRoles.Role.OVERSEER)))
 {
-        try {
-          log.info("This node has been started as a preferred overseer");
-          zkSys.getZkController().setPreferredOverseer();
-        } catch (KeeperException | InterruptedException e) {
-          throw new SolrException(ErrorCode.SERVER_ERROR, e);
-        }
-      }
       if (!distributedCollectionCommandRunner.isPresent()) {
+        if 
(NodeRoles.MODE_PREFERRED.equals(nodeRoles.getRoleMode(NodeRoles.Role.OVERSEER)))
 {
+          try {
+            log.info("This node is started as a preferred overseer");
+            zkSys.getZkController().setPreferredOverseer();
+          } catch (KeeperException | InterruptedException e) {
+            throw new SolrException(ErrorCode.SERVER_ERROR, e);
+          }
+        }
         zkSys.getZkController().checkOverseerDesignate();
       }
-
     }
     // This is a bit redundant but these are two distinct concepts for all 
they're accomplished at the same time.
     status |= LOAD_COMPLETE | INITIAL_CORE_LOAD_COMPLETE;

Reply via email to