You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2017/05/13 00:53:33 UTC
[2/2] lucene-solr:jira/solr-10233: Add support for ReplaceNodeCmd
Add support for ReplaceNodeCmd
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/659a0b41
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/659a0b41
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/659a0b41
Branch: refs/heads/jira/solr-10233
Commit: 659a0b4125559225e8c68efdabc8b670adf0715d
Parents: e927db5
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Fri May 12 17:53:22 2017 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Fri May 12 17:53:22 2017 -0700
----------------------------------------------------------------------
.../org/apache/solr/cloud/ReplaceNodeCmd.java | 4 ++--
.../org/apache/solr/cloud/ReplaceNodeTest.java | 21 ++++++++++++++++++--
.../solrj/request/CollectionAdminRequest.java | 5 ++---
3 files changed, 23 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/659a0b41/solr/core/src/java/org/apache/solr/cloud/ReplaceNodeCmd.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/ReplaceNodeCmd.java b/solr/core/src/java/org/apache/solr/cloud/ReplaceNodeCmd.java
index 92c9afe..e4240be 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ReplaceNodeCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ReplaceNodeCmd.java
@@ -154,9 +154,9 @@ public class ReplaceNodeCmd implements OverseerCollectionMessageHandler.Cmd {
SHARD_ID_PROP, slice.getName(),
ZkStateReader.CORE_NAME_PROP, replica.getCoreName(),
ZkStateReader.REPLICA_PROP, replica.getName(),
+ ZkStateReader.REPLICA_TYPE, replica.getType().name(),
CoreAdminParams.NODE, source);
- sourceReplicas.add(props
- );
+ sourceReplicas.add(props);
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/659a0b41/solr/core/src/test/org/apache/solr/cloud/ReplaceNodeTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ReplaceNodeTest.java b/solr/core/src/test/org/apache/solr/cloud/ReplaceNodeTest.java
index 1c7575d..e1af607 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ReplaceNodeTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ReplaceNodeTest.java
@@ -21,6 +21,7 @@ package org.apache.solr.cloud;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.EnumSet;
import java.util.Set;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -29,6 +30,9 @@ import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.client.solrj.response.CoreAdminResponse;
import org.apache.solr.client.solrj.response.RequestStatusState;
+import org.apache.solr.common.cloud.DocCollection;
+import org.apache.solr.common.cloud.Replica;
+import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.util.StrUtils;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -60,7 +64,12 @@ public class ReplaceNodeTest extends SolrCloudTestCase {
Collections.shuffle(l, random());
String emptyNode = l.remove(0);
String node2bdecommissioned = l.get(0);
- CollectionAdminRequest.Create create = CollectionAdminRequest.createCollection(coll, "conf1", 5, 2);
+ CollectionAdminRequest.Create create;
+ create = pickRandom(CollectionAdminRequest.createCollection(coll, "conf1", 5, 2),
+ CollectionAdminRequest.createCollection(coll, "conf1", 5, 1,1,0),
+ CollectionAdminRequest.createCollection(coll, "conf1", 5, 0,1,1),
+ CollectionAdminRequest.createCollection(coll, "conf1", 5, 1,0,1),
+ CollectionAdminRequest.createCollection(coll, "conf1", 5, 0,2,0));
create.setCreateNodeSet(StrUtils.join(l, ',')).setMaxShardsPerNode(3);
cloudClient.request(create);
log.info("excluded_node : {} ", emptyNode);
@@ -98,7 +107,15 @@ public class ReplaceNodeTest extends SolrCloudTestCase {
assertTrue(success);
try (HttpSolrClient coreclient = getHttpSolrClient(cloudClient.getZkStateReader().getBaseUrlForNodeName(emptyNode))) {
CoreAdminResponse status = CoreAdminRequest.getStatus(null, coreclient);
- assertTrue(status.getCoreStatus().size() == 0);
+ assertEquals("Expecting no cores but found some: " + status.getCoreStatus(), 0, status.getCoreStatus().size());
+ }
+
+ DocCollection collection = cloudClient.getZkStateReader().getClusterState().getCollection(coll);
+ assertEquals(create.getNumShards().intValue(), collection.getSlices().size());
+ for (Slice s:collection.getSlices()) {
+ assertEquals(create.getNumNrtReplicas().intValue(), s.getReplicas(EnumSet.of(Replica.Type.NRT)).size());
+ assertEquals(create.getNumTlogReplicas().intValue(), s.getReplicas(EnumSet.of(Replica.Type.TLOG)).size());
+ assertEquals(create.getNumPullReplicas().intValue(), s.getReplicas(EnumSet.of(Replica.Type.PULL)).size());
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/659a0b41/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
index 0b8dd74..dcfed27 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
@@ -457,9 +457,8 @@ public abstract class CollectionAdminRequest<T extends CollectionAdminResponse>
public Integer getReplicationFactor() { return getNumNrtReplicas(); }
public Integer getNumNrtReplicas() { return nrtReplicas; }
public Boolean getAutoAddReplicas() { return autoAddReplicas; }
- public Integer getNrtReplicas() { return nrtReplicas; }
- public Integer getTlogReplicas() {return tlogReplicas;}
- public Integer getPullReplicas() {return pullReplicas;}
+ public Integer getNumTlogReplicas() {return tlogReplicas;}
+ public Integer getNumPullReplicas() {return pullReplicas;}
public Integer getStateFormat() { return stateFormat; }