You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mk...@apache.org on 2019/06/25 05:50:15 UTC
[lucene-solr] branch master updated: SOLR-12866: Turn
TestHdfsCloudBackupRestore ON. No changes yet.
This is an automated email from the ASF dual-hosted git repository.
mkhl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/master by this push:
new 4589bbe SOLR-12866: Turn TestHdfsCloudBackupRestore ON. No changes yet.
4589bbe is described below
commit 4589bbe47bd2ae46eb5418a3b538c020d9122ad3
Author: Mikhail Khludnev <mk...@apache.org>
AuthorDate: Tue Jun 25 08:48:52 2019 +0300
SOLR-12866: Turn TestHdfsCloudBackupRestore ON. No changes yet.
---
.../collections/TestHdfsCloudBackupRestore.java | 3 -
.../solr/autoscaling/testEmptyCollection.json | 27 +++++++++
.../client/solrj/cloud/autoscaling/TestPolicy.java | 68 ++++++++++++++++++++++
3 files changed, 95 insertions(+), 3 deletions(-)
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
index 0d876db..2e7ea10 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
@@ -26,8 +26,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
-import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
-
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
@@ -65,7 +63,6 @@ import static org.apache.solr.core.backup.BackupManager.ZK_STATE_DIR;
@ThreadLeakFilters(defaultFilters = true, filters = {
BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
})
-@AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/SOLR-12866")
public class TestHdfsCloudBackupRestore extends AbstractCloudBackupRestoreTestCase {
public static final String SOLR_XML = "<solr>\n" +
"\n" +
diff --git a/solr/solrj/src/test-files/solrj/solr/autoscaling/testEmptyCollection.json b/solr/solrj/src/test-files/solrj/solr/autoscaling/testEmptyCollection.json
new file mode 100644
index 0000000..7dd4295
--- /dev/null
+++ b/solr/solrj/src/test-files/solrj/solr/autoscaling/testEmptyCollection.json
@@ -0,0 +1,27 @@
+{"clusterstate":{"test_empty_collection":{
+ "pullReplicas":0,
+ "replicationFactor":1,
+ "shards":{
+ "shard2":{
+ "range":"0-7fffffff",
+ "state":"active",
+ "replicas":{}},
+ "shard1_1":{
+ "range":"c0000000-ffffffff",
+ "state":"active",
+ "replicas":{},
+ "stateTimestamp":"1540603288721383849"},
+ "shard1_0":{
+ "range":"80000000-bfffffff",
+ "state":"active",
+ "replicas":{},
+ "stateTimestamp":"1540603288721468797"}},
+ "router":{
+ "name":"compositeId",
+ "field":"shard_s"},
+ "maxShardsPerNode":"-1",
+ "autoAddReplicas":"false",
+ "nrtReplicas":1,
+ "tlogReplicas":0}},
+
+ "replicaInfo":{}}
\ No newline at end of file
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java b/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java
index a793995..63e87a2 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java
@@ -2938,6 +2938,74 @@ public class TestPolicy extends SolrTestCaseJ4 {
assertEquals("s1", replicaPosition.shard); // sanity check
}
+ public void testPolicyForEmptyCollection() throws IOException, InterruptedException {
+ Map m = (Map) loadFromResource("testEmptyCollection.json");
+ Map clusterStateMap = (Map) m.remove("clusterstate");
+ Map replicaInfoMap = (Map) m.remove("replicaInfo");
+
+ ClusterState clusterState = ClusterState.load(1, clusterStateMap, ImmutableSet.of("node1", "node2"), CLUSTER_STATE);
+
+ List<String> shards = Arrays.asList("shard1", "shard2", "shard3");
+
+ Assign.AssignRequest assignRequest = new Assign.AssignRequestBuilder()
+ .forCollection("test_empty_collection")
+ .forShard(shards)
+ .assignNrtReplicas(1)
+ .build();
+
+ DelegatingCloudManager cloudManager = new DelegatingCloudManager(null) {
+ @Override
+ public ClusterStateProvider getClusterStateProvider() {
+ return new DelegatingClusterStateProvider(null) {
+ @Override
+ public ClusterState getClusterState() {
+ return clusterState;
+ }
+
+ @Override
+ public Set<String> getLiveNodes() {
+ return clusterState.getLiveNodes();
+ }
+ };
+ }
+
+ @Override
+ public DistribStateManager getDistribStateManager() {
+ return new DelegatingDistribStateManager(null) {
+ @Override
+ public AutoScalingConfig getAutoScalingConfig() {
+ return new AutoScalingConfig(new HashMap<>());
+ }
+ };
+ }
+
+ public NodeStateProvider getNodeStateProvider() {
+ return new DelegatingNodeStateProvider(null) {
+ @Override
+ public Map<String, Object> getNodeValues(String node, Collection<String> keys) {
+ return Collections.EMPTY_MAP;
+ }
+
+ @Override
+ public Map<String, Map<String, List<ReplicaInfo>>> getReplicaInfo(String node, Collection<String> keys) {
+ //return Collections.EMPTY_MAP;
+ return replicaInfoMap;
+ }
+ };
+ }
+
+ };
+
+ Assign.AssignStrategyFactory assignStrategyFactory = new Assign.AssignStrategyFactory(cloudManager);
+ ClusterState state = cloudManager.getClusterStateProvider().getClusterState();
+ DocCollection collection = state.getCollection("test_empty_collection");
+
+ Assign.AssignStrategy assignStrategy = assignStrategyFactory.create(state, collection);
+ List<ReplicaPosition> replicaPositions = assignStrategy.assign(cloudManager, assignRequest);
+ assertEquals(2,replicaPositions.stream().map((rp)-> rp.node).distinct().count());
+ assertEquals(3,replicaPositions.stream().map((rp)-> rp.shard).distinct().count());
+ }
+
/**
* Tests that an empty policy should not persist implicitly added keys to MapWriter
* <p>