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;