mirror of https://github.com/apache/lucene.git
SOLR-11005: reverted the changes
This commit is contained in:
parent
91446f7f77
commit
eb49230e37
|
@ -32,32 +32,28 @@ import java.util.concurrent.TimeUnit;
|
|||
import org.apache.solr.client.solrj.cloud.autoscaling.Policy;
|
||||
import org.apache.solr.client.solrj.cloud.autoscaling.PolicyHelper;
|
||||
import org.apache.solr.cloud.OverseerCollectionMessageHandler.Cmd;
|
||||
import org.apache.solr.cloud.autoscaling.AutoScalingHandler;
|
||||
import org.apache.solr.cloud.overseer.ClusterStateMutator;
|
||||
import org.apache.solr.common.cloud.ReplicaPosition;
|
||||
import org.apache.solr.common.SolrException;
|
||||
import org.apache.solr.common.SolrException.ErrorCode;
|
||||
import org.apache.solr.common.cloud.ClusterState;
|
||||
import org.apache.solr.common.cloud.DocRouter;
|
||||
import org.apache.solr.common.cloud.ImplicitDocRouter;
|
||||
import org.apache.solr.common.cloud.Replica;
|
||||
import org.apache.solr.common.cloud.ReplicaPosition;
|
||||
import org.apache.solr.common.cloud.SolrZkClient;
|
||||
import org.apache.solr.common.cloud.ZkConfigManager;
|
||||
import org.apache.solr.common.cloud.ZkNodeProps;
|
||||
import org.apache.solr.common.cloud.ZkStateReader;
|
||||
import org.apache.solr.common.cloud.ZooKeeperException;
|
||||
import org.apache.solr.common.params.AutoScalingParams;
|
||||
import org.apache.solr.common.params.CollectionAdminParams;
|
||||
import org.apache.solr.common.params.CoreAdminParams;
|
||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||
import org.apache.solr.common.util.CommandOperation;
|
||||
import org.apache.solr.common.util.NamedList;
|
||||
import org.apache.solr.common.util.SimpleOrderedMap;
|
||||
import org.apache.solr.common.util.Utils;
|
||||
import org.apache.solr.handler.admin.ConfigSetsHandlerApi;
|
||||
import org.apache.solr.handler.component.ShardHandler;
|
||||
import org.apache.solr.handler.component.ShardRequest;
|
||||
import org.apache.solr.response.SolrQueryResponse;
|
||||
import org.apache.solr.util.TimeOut;
|
||||
import org.apache.zookeeper.CreateMode;
|
||||
import org.apache.zookeeper.KeeperException;
|
||||
|
@ -65,17 +61,19 @@ import org.apache.zookeeper.KeeperException.NoNodeException;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static java.util.Collections.singletonMap;
|
||||
import static org.apache.solr.cloud.OverseerCollectionMessageHandler.COLL_CONF;
|
||||
import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET;
|
||||
import static org.apache.solr.cloud.OverseerCollectionMessageHandler.NUM_SLICES;
|
||||
import static org.apache.solr.cloud.OverseerCollectionMessageHandler.RANDOM;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.*;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.NRT_REPLICAS;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.PULL_REPLICAS;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.SOLR_AUTOSCALING_CONF_PATH;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.TLOG_REPLICAS;
|
||||
import static org.apache.solr.common.params.CollectionParams.CollectionAction.ADDREPLICA;
|
||||
import static org.apache.solr.common.params.CommonAdminParams.ASYNC;
|
||||
import static org.apache.solr.common.params.CommonParams.NAME;
|
||||
import static org.apache.solr.common.params.CoreAdminParams.REPLICA;
|
||||
import static org.apache.solr.common.params.CoreAdminParams.SHARD;
|
||||
import static org.apache.solr.common.util.StrUtils.formatString;
|
||||
|
||||
public class CreateCollectionCmd implements Cmd {
|
||||
|
@ -177,26 +175,6 @@ public class CreateCollectionCmd implements Cmd {
|
|||
+ ". This requires " + requestedShardsToCreate
|
||||
+ " shards to be created (higher than the allowed number)");
|
||||
}
|
||||
if (usePolicyFramework && maxShardsPerNode > 0) {
|
||||
if (policy == null) {
|
||||
//this means we should create a policy for this collection
|
||||
AutoScalingHandler ash = (AutoScalingHandler) ocmh.overseer.getZkController().getCoreContainer().getRequestHandler(AutoScalingHandler.HANDLER_PATH);
|
||||
Map newPolicy = Utils.makeMap(REPLICA, "<" + (maxShardsPerNode + 1), SHARD, Policy.EACH, "node", Policy.ANY);
|
||||
SolrQueryResponse rsp = new SolrQueryResponse();
|
||||
policy = "COLL_POLICY_" + collectionName;
|
||||
ash.processOps(null, rsp, Collections.singletonList(new CommandOperation(AutoScalingParams.CMD_SET_POLICY, singletonMap(
|
||||
policy
|
||||
, Collections.singletonList(newPolicy)))));
|
||||
if (!"success".equals(rsp.getValues().get("result"))) {
|
||||
throw new SolrException(ErrorCode.SERVER_ERROR, "unable to create new policy");
|
||||
}
|
||||
message.getProperties().put(Policy.POLICY, policy);
|
||||
|
||||
} else {
|
||||
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Cannot create collection");
|
||||
}
|
||||
}
|
||||
|
||||
replicaPositions = Assign.identifyNodes(ocmh
|
||||
, clusterState, nodeList, collectionName, message, shardNames, numNrtReplicas, numTlogReplicas, numPullReplicas);
|
||||
}
|
||||
|
|
|
@ -19,14 +19,12 @@
|
|||
package org.apache.solr.cloud;
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.solr.cloud.autoscaling.AutoScalingHandler;
|
||||
import org.apache.solr.common.NonExistentCoreException;
|
||||
import org.apache.solr.common.SolrException;
|
||||
import org.apache.solr.common.cloud.ClusterState;
|
||||
|
@ -34,15 +32,11 @@ import org.apache.solr.common.cloud.DocCollection;
|
|||
import org.apache.solr.common.cloud.SolrZkClient;
|
||||
import org.apache.solr.common.cloud.ZkNodeProps;
|
||||
import org.apache.solr.common.cloud.ZkStateReader;
|
||||
import org.apache.solr.common.params.AutoScalingParams;
|
||||
import org.apache.solr.common.params.CoreAdminParams;
|
||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||
import org.apache.solr.common.util.CommandOperation;
|
||||
import org.apache.solr.common.util.NamedList;
|
||||
import org.apache.solr.common.util.StrUtils;
|
||||
import org.apache.solr.common.util.Utils;
|
||||
import org.apache.solr.core.snapshots.SolrSnapshotManager;
|
||||
import org.apache.solr.response.SolrQueryResponse;
|
||||
import org.apache.solr.util.TimeOut;
|
||||
import org.apache.zookeeper.KeeperException;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -115,31 +109,6 @@ public class DeleteCollectionCmd implements OverseerCollectionMessageHandler.Cmd
|
|||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
|
||||
"Could not fully remove collection: " + collection);
|
||||
}
|
||||
String collectionSpecificPolicy = "COLL_POLICY_" + collection;
|
||||
if (collectionSpecificPolicy.equals(policy)) {
|
||||
for (Map.Entry<String, ClusterState.CollectionRef> e : state.getCollectionStates().entrySet()) {
|
||||
if (collection.equals(e.getKey())) continue;
|
||||
DocCollection c = e.getValue().get();
|
||||
if (collectionSpecificPolicy.equals(c.getPolicyName())) {
|
||||
log.info(StrUtils.formatString("{0} is being used by collection {1} . So, it's not deleted", collectionSpecificPolicy, e.getKey()));
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
AutoScalingHandler ash = (AutoScalingHandler) ocmh.overseer.getZkController().getCoreContainer()
|
||||
.getRequestHandler(AutoScalingHandler.HANDLER_PATH);
|
||||
SolrQueryResponse rsp = new SolrQueryResponse();
|
||||
try {
|
||||
ash.processOps(null, rsp, Collections.singletonList(new CommandOperation(AutoScalingParams.CMD_REMOVE_POLICY, collectionSpecificPolicy)));
|
||||
} catch (SolrException e) {
|
||||
if (e.getMessage().contains("No policy exists with name")) {
|
||||
log.warn("The policy: " + collectionSpecificPolicy + " does not exist to be removed");
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} finally {
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static org.apache.solr.cloud.autoscaling.AutoScalingHandlerTest.createAutoScalingRequest;
|
||||
import static org.apache.solr.common.cloud.ZkStateReader.SOLR_AUTOSCALING_CONF_PATH;
|
||||
import static org.apache.solr.common.util.Utils.getObjectByPath;
|
||||
|
||||
@LuceneTestCase.Slow
|
||||
|
@ -180,47 +179,6 @@ public class TestPolicyCloud extends SolrCloudTestCase {
|
|||
|
||||
}
|
||||
|
||||
public void testCreateCollectionWithPolicyAndMaxShardsPerNode() throws Exception {
|
||||
CloudSolrClient solrClient = cluster.getSolrClient();
|
||||
Map original = Utils.getJson(solrClient.getZkStateReader().getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
|
||||
String setClusterPolicyCommand = "{" +
|
||||
" 'set-cluster-policy': [" +
|
||||
" {'cores':'<10', 'node':'#ANY'}," +
|
||||
" {'replica':'<2', 'shard': '#EACH', 'node': '#ANY'}," +
|
||||
" {'nodeRole':'overseer', 'replica':0}" +
|
||||
" ]" +
|
||||
"}";
|
||||
SolrRequest req = createAutoScalingRequest(SolrRequest.METHOD.POST, setClusterPolicyCommand);
|
||||
NamedList<Object> response = solrClient.request(req);
|
||||
assertEquals(response.get("result").toString(), "success");
|
||||
Map data = Utils.getJson(solrClient.getZkStateReader().getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
|
||||
List clusterPolicy = (List) data.get("cluster-policy");
|
||||
assertNotNull(clusterPolicy);
|
||||
assertEquals(3, clusterPolicy.size());
|
||||
|
||||
CollectionAdminRequest.createCollection("myColl", "conf", 1, 2)
|
||||
.process(cluster.getSolrClient());
|
||||
data = Utils.getJson(solrClient.getZkStateReader().getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
|
||||
assertEquals("Did create unexpected new policy " + Utils.toJSONString(data),
|
||||
null, Utils.getObjectByPath(data, false, "policies/COLL_POLICY_myColl"));
|
||||
CollectionAdminRequest.createCollection("myColl2", "conf", 1, 2)
|
||||
.setMaxShardsPerNode(4)
|
||||
.process(cluster.getSolrClient());
|
||||
data = Utils.getJson(solrClient.getZkStateReader().getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
|
||||
|
||||
assertEquals("Did not create expected new policy " + Utils.toJSONString(data),
|
||||
"<5", Utils.getObjectByPath(data, false, "policies/COLL_POLICY_myColl2[0]/replica"));
|
||||
|
||||
CollectionAdminRequest.deleteCollection("myColl2").process(cluster.getSolrClient());
|
||||
|
||||
data = Utils.getJson(solrClient.getZkStateReader().getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
|
||||
assertEquals("Did not delete new policy " + Utils.toJSONString(data),
|
||||
null, Utils.getObjectByPath(data, false, "policies/COLL_POLICY_myColl2"));
|
||||
|
||||
solrClient.getZkStateReader().getZkClient().setData(SOLR_AUTOSCALING_CONF_PATH, Utils.toJSON(original), true);
|
||||
|
||||
}
|
||||
|
||||
public void testCreateCollectionAddShardWithReplicaTypeUsingPolicy() throws Exception {
|
||||
JettySolrRunner jetty = cluster.getJettySolrRunners().get(0);
|
||||
String nrtNodeName = jetty.getNodeName();
|
||||
|
|
Loading…
Reference in New Issue