From 13a3ae292277d770cb5219142729c14db9744fa5 Mon Sep 17 00:00:00 2001 From: Ishan Chattopadhyaya Date: Wed, 28 Jun 2017 07:55:40 +0530 Subject: [PATCH] SOLR-10931: Refactoring the package name for autoscaling client classes --- .../java/org/apache/solr/cloud/Assign.java | 6 +-- .../OverseerCollectionMessageHandler.java | 4 +- .../cloud/autoscaling/AutoScalingHandler.java | 13 ++++-- .../handler/admin/CollectionsHandler.java | 2 +- .../autoscaling/AddReplicaSuggester.java | 4 +- .../solrj}/cloud/autoscaling/Cell.java | 20 +++++++-- .../solrj}/cloud/autoscaling/Clause.java | 42 ++++++++++++------- .../autoscaling/ClusterDataProvider.java | 2 +- .../autoscaling/MoveReplicaSuggester.java | 8 ++-- .../solrj}/cloud/autoscaling/Operand.java | 14 +++---- .../solrj}/cloud/autoscaling/Policy.java | 12 +++--- .../cloud/autoscaling/PolicyHelper.java | 4 +- .../solrj}/cloud/autoscaling/Preference.java | 8 +++- .../solrj}/cloud/autoscaling/Row.java | 20 +++++---- .../cloud/autoscaling/package-info.java | 2 +- .../solrj/impl/SolrClientDataProvider.java | 4 +- .../solrj/request/CollectionAdminRequest.java | 2 +- .../solr/common/cloud/DocCollection.java | 2 +- .../solr/cloud/autoscaling/TestPolicy.java | 23 ++++++---- 19 files changed, 119 insertions(+), 73 deletions(-) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/AddReplicaSuggester.java (95%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/Cell.java (79%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/Clause.java (93%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/ClusterDataProvider.java (96%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/MoveReplicaSuggester.java (92%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/Operand.java (87%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/Policy.java (98%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/PolicyHelper.java (96%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/Preference.java (95%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/Row.java (84%) rename solr/solrj/src/java/org/apache/solr/{ => client/solrj}/cloud/autoscaling/package-info.java (94%) diff --git a/solr/core/src/java/org/apache/solr/cloud/Assign.java b/solr/core/src/java/org/apache/solr/cloud/Assign.java index cdcf415fd9e..9f212454b42 100644 --- a/solr/core/src/java/org/apache/solr/cloud/Assign.java +++ b/solr/core/src/java/org/apache/solr/cloud/Assign.java @@ -29,11 +29,11 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy; +import org.apache.solr.client.solrj.cloud.autoscaling.PolicyHelper; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.SolrClientDataProvider; import org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; -import org.apache.solr.cloud.autoscaling.Policy; -import org.apache.solr.cloud.autoscaling.PolicyHelper; import org.apache.solr.cloud.rule.ReplicaAssigner; import org.apache.solr.cloud.rule.Rule; import org.apache.solr.common.SolrException; @@ -48,7 +48,7 @@ import org.apache.solr.core.CoreContainer; import org.apache.zookeeper.KeeperException; import static java.util.Collections.singletonMap; -import static org.apache.solr.cloud.autoscaling.Policy.POLICY; +import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.POLICY; import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP; import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE; import static org.apache.solr.common.cloud.ZkStateReader.SOLR_AUTOSCALING_CONF_PATH; diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java index a055033fcbd..c6051d75fc6 100644 --- a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java +++ b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java @@ -37,12 +37,12 @@ import com.google.common.collect.ImmutableMap; import org.apache.commons.lang.StringUtils; import org.apache.solr.client.solrj.SolrResponse; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.HttpSolrClient.RemoteSolrException; import org.apache.solr.client.solrj.request.AbstractUpdateRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.UpdateResponse; -import org.apache.solr.cloud.autoscaling.Policy; import org.apache.solr.cloud.overseer.OverseerAction; import org.apache.solr.cloud.rule.ReplicaAssigner; import org.apache.solr.cloud.rule.ReplicaAssigner.Position; @@ -81,7 +81,7 @@ import org.apache.zookeeper.KeeperException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.solr.cloud.autoscaling.Policy.POLICY; +import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.POLICY; import static org.apache.solr.common.cloud.DocCollection.SNITCH; import static org.apache.solr.common.cloud.ZkStateReader.BASE_URL_PROP; import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP; diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java index 5946bf450cf..356ce379f7e 100644 --- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java +++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java @@ -28,6 +28,11 @@ import java.util.Map; import com.google.common.collect.ImmutableSet; import org.apache.solr.api.Api; import org.apache.solr.api.ApiBag; +import org.apache.solr.client.solrj.cloud.autoscaling.Cell; +import org.apache.solr.client.solrj.cloud.autoscaling.Clause; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy; +import org.apache.solr.client.solrj.cloud.autoscaling.Preference; +import org.apache.solr.client.solrj.cloud.autoscaling.Row; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.SolrClientDataProvider; import org.apache.solr.common.SolrException; @@ -139,11 +144,11 @@ public class AutoScalingHandler extends RequestHandlerBase implements Permission List> sortedNodes = new ArrayList<>(sorted.size()); for (Row row : sorted) { Map map = Utils.makeMap("node", row.node); - for (Cell cell : row.cells) { + for (Cell cell : row.getCells()) { for (Preference clusterPreference : clusterPreferences) { - Policy.SortParam name = clusterPreference.name; - if (cell.name.equalsIgnoreCase(name.name())) { - map.put(name.name(), cell.val); + Policy.SortParam name = clusterPreference.getName(); + if (cell.getName().equalsIgnoreCase(name.name())) { + map.put(name.name(), cell.getValue()); break; } } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java index 3f2eb5f048c..122aa4a4f97 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java @@ -92,6 +92,7 @@ import org.apache.zookeeper.KeeperException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.POLICY; import static org.apache.solr.client.solrj.response.RequestStatusState.COMPLETED; import static org.apache.solr.client.solrj.response.RequestStatusState.FAILED; import static org.apache.solr.client.solrj.response.RequestStatusState.NOT_FOUND; @@ -109,7 +110,6 @@ import static org.apache.solr.cloud.OverseerCollectionMessageHandler.ONLY_IF_DOW import static org.apache.solr.cloud.OverseerCollectionMessageHandler.REQUESTID; import static org.apache.solr.cloud.OverseerCollectionMessageHandler.SHARDS_PROP; import static org.apache.solr.cloud.OverseerCollectionMessageHandler.SHARD_UNIQUE; -import static org.apache.solr.cloud.autoscaling.Policy.POLICY; import static org.apache.solr.common.SolrException.ErrorCode.BAD_REQUEST; import static org.apache.solr.common.cloud.DocCollection.DOC_ROUTER; import static org.apache.solr.common.cloud.DocCollection.RULE; diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/AddReplicaSuggester.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java similarity index 95% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/AddReplicaSuggester.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java index 354851e31c1..01149f382c0 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/AddReplicaSuggester.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AddReplicaSuggester.java @@ -15,13 +15,13 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.util.List; import org.apache.solr.client.solrj.SolrRequest; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.Suggester; import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.cloud.autoscaling.Policy.Suggester; class AddReplicaSuggester extends Suggester { diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Cell.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Cell.java similarity index 79% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Cell.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Cell.java index 0f2b24baeed..0ac2b3660f8 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Cell.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Cell.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.io.IOException; import java.util.HashMap; @@ -23,18 +23,18 @@ import java.util.HashMap; import org.apache.solr.common.MapWriter; import org.apache.solr.common.util.Utils; -class Cell implements MapWriter { +public class Cell implements MapWriter { final int index; final String name; Object val, approxVal; - Cell(int index, String name, Object val) { + public Cell(int index, String name, Object val) { this.index = index; this.name = name; this.val = val; } - Cell(int index, String name, Object val, Object approxVal) { + public Cell(int index, String name, Object val, Object approxVal) { this.index = index; this.name = name; this.val = val; @@ -54,4 +54,16 @@ class Cell implements MapWriter { public Cell copy() { return new Cell(index, name, val, approxVal); } + + public String getName() { + return name; + } + + public Object getValue() { + return val; + } + + public Object getApproxValue() { + return approxVal; + } } diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Clause.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java similarity index 93% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Clause.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java index 5e4078a4290..ff56627d254 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Clause.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Clause.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.io.IOException; import java.util.ArrayList; @@ -30,32 +30,32 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.solr.cloud.autoscaling.Policy.ReplicaInfo; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.ReplicaInfo; import org.apache.solr.common.MapWriter; import org.apache.solr.common.cloud.rule.ImplicitSnitch; import org.apache.solr.common.util.StrUtils; import org.apache.solr.common.util.Utils; import static java.util.Collections.singletonMap; -import static org.apache.solr.cloud.autoscaling.Clause.TestStatus.PASS; -import static org.apache.solr.cloud.autoscaling.Operand.EQUAL; -import static org.apache.solr.cloud.autoscaling.Operand.GREATER_THAN; -import static org.apache.solr.cloud.autoscaling.Operand.LESS_THAN; -import static org.apache.solr.cloud.autoscaling.Operand.NOT_EQUAL; -import static org.apache.solr.cloud.autoscaling.Operand.WILDCARD; -import static org.apache.solr.cloud.autoscaling.Policy.ANY; +import static org.apache.solr.client.solrj.cloud.autoscaling.Clause.TestStatus.PASS; +import static org.apache.solr.client.solrj.cloud.autoscaling.Operand.EQUAL; +import static org.apache.solr.client.solrj.cloud.autoscaling.Operand.GREATER_THAN; +import static org.apache.solr.client.solrj.cloud.autoscaling.Operand.LESS_THAN; +import static org.apache.solr.client.solrj.cloud.autoscaling.Operand.NOT_EQUAL; +import static org.apache.solr.client.solrj.cloud.autoscaling.Operand.WILDCARD; +import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.ANY; import static org.apache.solr.common.params.CoreAdminParams.COLLECTION; import static org.apache.solr.common.params.CoreAdminParams.REPLICA; import static org.apache.solr.common.params.CoreAdminParams.SHARD; // a set of conditions in a policy public class Clause implements MapWriter, Comparable { - Map original; - Condition collection, shard, replica, tag, globalTag; + public Map original; + public Condition collection, shard, replica, tag, globalTag; boolean strict = true; - Clause(Map m) { + public Clause(Map m) { this.original = m; strict = Boolean.parseBoolean(String.valueOf(m.getOrDefault("strict", "true"))); Optional globalTagName = m.keySet().stream().filter(Policy.GLOBAL_ONLY_TAGS::contains).findFirst(); @@ -125,7 +125,7 @@ public class Clause implements MapWriter, Comparable { if (tag != null && !params.contains(tag.name)) params.add(tag.name); } - static class Condition { + public static class Condition { final String name; final Object val; final Operand op; @@ -144,11 +144,11 @@ public class Clause implements MapWriter, Comparable { return op.match(this.val, testVal); } - boolean isPass(Object inputVal) { + public boolean isPass(Object inputVal) { return op.match(val, validate(name, inputVal, false)) == PASS; } - boolean isPass(Row row) { + public boolean isPass(Row row) { return op.match(val, row.getVal(name)) == PASS; } @@ -164,6 +164,18 @@ public class Clause implements MapWriter, Comparable { public Integer delta(Object val) { return op.delta(this.val, val); } + + public String getName() { + return name; + } + + public Object getValue() { + return val; + } + + public Operand getOperand() { + return op; + } } static Condition parse(String s, Map m) { diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/ClusterDataProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ClusterDataProvider.java similarity index 96% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/ClusterDataProvider.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ClusterDataProvider.java index 710db8708fe..e87362582ac 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/ClusterDataProvider.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ClusterDataProvider.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.io.Closeable; import java.io.IOException; diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/MoveReplicaSuggester.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/MoveReplicaSuggester.java similarity index 92% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/MoveReplicaSuggester.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/MoveReplicaSuggester.java index 97aef515f95..bf9c284ad02 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/MoveReplicaSuggester.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/MoveReplicaSuggester.java @@ -15,15 +15,15 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.util.List; import org.apache.solr.client.solrj.SolrRequest; +import org.apache.solr.client.solrj.cloud.autoscaling.Clause.Violation; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.ReplicaInfo; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.Suggester; import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.cloud.autoscaling.Clause.Violation; -import org.apache.solr.cloud.autoscaling.Policy.ReplicaInfo; -import org.apache.solr.cloud.autoscaling.Policy.Suggester; import org.apache.solr.common.util.Pair; public class MoveReplicaSuggester extends Suggester { diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Operand.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Operand.java similarity index 87% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Operand.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Operand.java index f961cac6b21..e012718301c 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Operand.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Operand.java @@ -15,16 +15,16 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; + +import static org.apache.solr.client.solrj.cloud.autoscaling.Clause.TestStatus.FAIL; +import static org.apache.solr.client.solrj.cloud.autoscaling.Clause.TestStatus.NOT_APPLICABLE; +import static org.apache.solr.client.solrj.cloud.autoscaling.Clause.TestStatus.PASS; +import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.ANY; import java.util.Objects; -import org.apache.solr.cloud.autoscaling.Clause.TestStatus; - -import static org.apache.solr.cloud.autoscaling.Clause.TestStatus.FAIL; -import static org.apache.solr.cloud.autoscaling.Clause.TestStatus.NOT_APPLICABLE; -import static org.apache.solr.cloud.autoscaling.Clause.TestStatus.PASS; -import static org.apache.solr.cloud.autoscaling.Policy.ANY; +import org.apache.solr.client.solrj.cloud.autoscaling.Clause.TestStatus; public enum Operand { diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Policy.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java similarity index 98% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Policy.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java index c86ccf98ea1..ccb0dee58f8 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Policy.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.io.IOException; import java.util.ArrayList; @@ -36,7 +36,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import org.apache.solr.client.solrj.SolrRequest; -import org.apache.solr.cloud.autoscaling.Clause.Violation; +import org.apache.solr.client.solrj.cloud.autoscaling.Clause.Violation; import org.apache.solr.common.IteratorWriter; import org.apache.solr.common.MapWriter; import org.apache.solr.common.params.CollectionParams.CollectionAction; @@ -263,7 +263,7 @@ public class Policy implements MapWriter { return new Session(dataProvider); } - enum SortParam { + public enum SortParam { freedisk(0, Integer.MAX_VALUE), cores(0, Integer.MAX_VALUE), heapUsage(0, Integer.MAX_VALUE), sysLoadAvg(0, 100); public final int min,max; @@ -480,7 +480,7 @@ public class Policy implements MapWriter { } - static List mergePolicies(String coll, + public static List mergePolicies(String coll, List collPolicy, List globalPolicy) { @@ -515,5 +515,7 @@ public class Policy implements MapWriter { ops.put(CollectionAction.MOVEREPLICA, () -> new MoveReplicaSuggester()); } - + public Map> getPolicies() { + return policies; + } } diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/PolicyHelper.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PolicyHelper.java similarity index 96% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/PolicyHelper.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PolicyHelper.java index 33d4b979a7a..deea1755291 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/PolicyHelper.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/PolicyHelper.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.util.ArrayList; @@ -25,7 +25,7 @@ import java.util.List; import java.util.Map; import org.apache.solr.client.solrj.SolrRequest; -import org.apache.solr.cloud.autoscaling.Policy.Suggester.Hint; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.Suggester.Hint; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CoreAdminParams; import org.apache.solr.common.util.Utils; diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Preference.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Preference.java similarity index 95% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Preference.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Preference.java index 0566d25c4b2..bb4562872e3 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Preference.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Preference.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.io.IOException; import java.util.List; @@ -25,7 +25,7 @@ import org.apache.solr.common.MapWriter; import org.apache.solr.common.util.StrUtils; import org.apache.solr.common.util.Utils; -class Preference implements MapWriter { +public class Preference implements MapWriter { final Policy.SortParam name; Integer precision; final Policy.Sort sort; @@ -82,4 +82,8 @@ class Preference implements MapWriter { ew.put(String.valueOf(e.getKey()), e.getValue()); } } + + public Policy.SortParam getName() { + return name; + } } diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Row.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java similarity index 84% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Row.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java index f7ab5cad7a3..76c8c574370 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/Row.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Row.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; import java.io.IOException; import java.util.ArrayList; @@ -24,23 +24,23 @@ import java.util.List; import java.util.Map; import java.util.Random; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.ReplicaInfo; import org.apache.solr.common.IteratorWriter; import org.apache.solr.common.MapWriter; import org.apache.solr.common.util.Pair; import org.apache.solr.common.util.Utils; -import org.apache.solr.cloud.autoscaling.Policy.ReplicaInfo; import static org.apache.solr.common.params.CoreAdminParams.NODE; -class Row implements MapWriter { +public class Row implements MapWriter { public final String node; final Cell[] cells; - Map>> collectionVsShardVsReplicas; + public Map>> collectionVsShardVsReplicas; List violations = new ArrayList<>(); boolean anyValueMissing = false; - Row(String node, List params, ClusterDataProvider dataProvider) { + public Row(String node, List params, ClusterDataProvider dataProvider) { collectionVsShardVsReplicas = dataProvider.getReplicaInfo(node, params); if (collectionVsShardVsReplicas == null) collectionVsShardVsReplicas = new HashMap<>(); this.node = node; @@ -54,7 +54,7 @@ class Row implements MapWriter { } } - Row(String node, Cell[] cells, boolean anyValueMissing, Map>> collectionVsShardVsReplicas, List violations) { + public Row(String node, Cell[] cells, boolean anyValueMissing, Map>> collectionVsShardVsReplicas, List violations) { this.node = node; this.cells = new Cell[cells.length]; for (int i = 0; i < this.cells.length; i++) { @@ -89,7 +89,7 @@ class Row implements MapWriter { } // this adds a replica to the replica info - Row addReplica(String coll, String shard) { + public Row addReplica(String coll, String shard) { Row row = copy(); Map> c = row.collectionVsShardVsReplicas.computeIfAbsent(coll, k -> new HashMap<>()); List replicas = c.computeIfAbsent(shard, k -> new ArrayList<>()); @@ -101,7 +101,7 @@ class Row implements MapWriter { } - Pair removeReplica(String coll, String shard) { + public Pair removeReplica(String coll, String shard) { Row row = copy(); Map> c = row.collectionVsShardVsReplicas.get(coll); if (c == null) return null; @@ -113,4 +113,8 @@ class Row implements MapWriter { return new Pair(row, s.remove(0)); } + + public Cell[] getCells() { + return cells; + } } diff --git a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/package-info.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/package-info.java similarity index 94% rename from solr/solrj/src/java/org/apache/solr/cloud/autoscaling/package-info.java rename to solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/package-info.java index 472b1ac17d0..620f57d3eb9 100644 --- a/solr/solrj/src/java/org/apache/solr/cloud/autoscaling/package-info.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/package-info.java @@ -19,5 +19,5 @@ * Common classes for autoscaling parsing filtering nodes and sorting */ -package org.apache.solr.cloud.autoscaling; +package org.apache.solr.client.solrj.cloud.autoscaling; diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientDataProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientDataProvider.java index e40f32b3f9d..5b61822827d 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientDataProvider.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientDataProvider.java @@ -32,10 +32,10 @@ import java.util.Set; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.cloud.autoscaling.ClusterDataProvider; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.ReplicaInfo; import org.apache.solr.client.solrj.request.GenericSolrRequest; import org.apache.solr.client.solrj.response.SimpleSolrResponse; -import org.apache.solr.cloud.autoscaling.ClusterDataProvider; -import org.apache.solr.cloud.autoscaling.Policy.ReplicaInfo; import org.apache.solr.common.MapWriter; import org.apache.solr.common.SolrException; import org.apache.solr.common.cloud.ClusterState; 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 740de34adb0..f039ba4048d 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 @@ -46,7 +46,7 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.NamedList; -import static org.apache.solr.cloud.autoscaling.Policy.POLICY; +import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.POLICY; import static org.apache.solr.common.params.CollectionAdminParams.COUNT_PROP; import static org.apache.solr.common.params.CollectionAdminParams.CREATE_NODE_SET_PARAM; import static org.apache.solr.common.params.CollectionAdminParams.CREATE_NODE_SET_SHUFFLE_PARAM; diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/DocCollection.java b/solr/solrj/src/java/org/apache/solr/common/cloud/DocCollection.java index 5dc4ebb83e4..b1d6ee2cc18 100644 --- a/solr/solrj/src/java/org/apache/solr/common/cloud/DocCollection.java +++ b/solr/solrj/src/java/org/apache/solr/common/cloud/DocCollection.java @@ -28,7 +28,7 @@ import java.util.Objects; import java.util.Set; import java.util.function.BiConsumer; -import org.apache.solr.cloud.autoscaling.Policy; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.noggit.JSONUtil; diff --git a/solr/solrj/src/test/org/apache/solr/cloud/autoscaling/TestPolicy.java b/solr/solrj/src/test/org/apache/solr/cloud/autoscaling/TestPolicy.java index 8c296b97166..a036c8d9cc6 100644 --- a/solr/solrj/src/test/org/apache/solr/cloud/autoscaling/TestPolicy.java +++ b/solr/solrj/src/test/org/apache/solr/cloud/autoscaling/TestPolicy.java @@ -31,9 +31,16 @@ import java.util.Map; import com.google.common.collect.ImmutableList; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.SolrRequest; +import org.apache.solr.client.solrj.cloud.autoscaling.Cell; +import org.apache.solr.client.solrj.cloud.autoscaling.Clause; +import org.apache.solr.client.solrj.cloud.autoscaling.ClusterDataProvider; +import org.apache.solr.client.solrj.cloud.autoscaling.Operand; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy; +import org.apache.solr.client.solrj.cloud.autoscaling.PolicyHelper; +import org.apache.solr.client.solrj.cloud.autoscaling.Row; +import org.apache.solr.client.solrj.cloud.autoscaling.Clause.Violation; +import org.apache.solr.client.solrj.cloud.autoscaling.Policy.Suggester.Hint; import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.cloud.autoscaling.Clause.Violation; -import org.apache.solr.cloud.autoscaling.Policy.Suggester.Hint; import org.apache.solr.common.params.CollectionParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.Utils; @@ -219,7 +226,7 @@ public class TestPolicy extends SolrTestCaseJ4 { " }" + "}"); Policy policy = new Policy(map); - List clauses = Policy.mergePolicies("mycoll", policy.policies.get("policy1"), policy.clusterPolicy); + List clauses = Policy.mergePolicies("mycoll", policy.getPolicies().get("policy1"), policy.getClusterPolicy()); Collections.sort(clauses); assertEquals(clauses.size(), 4); assertEquals("1", String.valueOf(clauses.get(0).original.get("replica"))); @@ -240,8 +247,8 @@ public class TestPolicy extends SolrTestCaseJ4 { Policy p = new Policy((Map) Utils.fromJSONString(rules)); List clauses = new ArrayList<>(p.getClusterPolicy()); Collections.sort(clauses); - assertEquals("nodeRole", clauses.get(1).tag.name); - assertEquals("sysprop.rack", clauses.get(0).tag.name); + assertEquals("nodeRole", clauses.get(1).tag.getName()); + assertEquals("sysprop.rack", clauses.get(0).tag.getName()); } public void testRules() throws IOException { @@ -275,9 +282,9 @@ public class TestPolicy extends SolrTestCaseJ4 { List violations = session.getViolations(); assertEquals(3, violations.size()); - assertTrue(violations.stream().anyMatch(violation -> "node3".equals(violation.getClause().tag.val))); - assertTrue(violations.stream().anyMatch(violation -> "nodeRole".equals(violation.getClause().tag.name))); - assertTrue(violations.stream().anyMatch(violation -> (violation.getClause().replica.op == Operand.LESS_THAN && "node".equals(violation.getClause().tag.name)))); + assertTrue(violations.stream().anyMatch(violation -> "node3".equals(violation.getClause().tag.getValue()))); + assertTrue(violations.stream().anyMatch(violation -> "nodeRole".equals(violation.getClause().tag.getName()))); + assertTrue(violations.stream().anyMatch(violation -> (violation.getClause().replica.getOperand() == Operand.LESS_THAN && "node".equals(violation.getClause().tag.getName())))); Policy.Suggester suggester = session.getSuggester(ADDREPLICA) .hint(Hint.COLL, "gettingstarted")