You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/07/13 15:38:44 UTC
[47/47] lucene-solr:jira/solr-11000: SOLR-11000 Fix other bugs due to
API changes on parent branch.
SOLR-11000 Fix other bugs due to API changes on parent branch.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e95534d2
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e95534d2
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e95534d2
Branch: refs/heads/jira/solr-11000
Commit: e95534d28d5dd758c79c288ef9b176278d45820b
Parents: 5aaaa491
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Thu Jul 13 17:09:21 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Thu Jul 13 17:09:21 2017 +0200
----------------------------------------------------------------------
.../apache/solr/cloud/CreateCollectionCmd.java | 4 +-
.../apache/solr/cloud/DeleteCollectionCmd.java | 3 +-
.../cloud/autoscaling/AutoScalingHandler.java | 107 +++++++++----------
...verseerCollectionConfigSetProcessorTest.java | 3 +
4 files changed, 60 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e95534d2/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
index 6f1b42c..d859170 100644
--- a/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
@@ -188,9 +188,9 @@ public class CreateCollectionCmd implements Cmd {
Map newPolicy = Utils.makeMap(REPLICA, "<" + (maxShardsPerNode + 1), SHARD, Policy.EACH, "node", Policy.ANY);
SolrQueryResponse rsp = new SolrQueryResponse();
policy = "COLL_POLICY_" + collectionName;
- ash.handleSetPolicies(null, rsp, new CommandOperation(AutoScalingParams.CMD_SET_POLICY, singletonMap(
+ ash.processOps(null, rsp, Collections.singletonList(new CommandOperation(AutoScalingParams.CMD_SET_POLICY, singletonMap(
policy
- , Collections.singletonList(newPolicy))));
+ , Collections.singletonList(newPolicy)))));
if (!"success".equals(rsp.getValues().get("result"))) {
throw new SolrException(ErrorCode.SERVER_ERROR, "unable to create new policy");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e95534d2/solr/core/src/java/org/apache/solr/cloud/DeleteCollectionCmd.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/DeleteCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/DeleteCollectionCmd.java
index f0ee458..f7b2fce 100644
--- a/solr/core/src/java/org/apache/solr/cloud/DeleteCollectionCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/DeleteCollectionCmd.java
@@ -19,6 +19,7 @@
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;
@@ -129,7 +130,7 @@ public class DeleteCollectionCmd implements OverseerCollectionMessageHandler.Cmd
.getRequestHandler(AutoScalingHandler.HANDLER_PATH);
SolrQueryResponse rsp = new SolrQueryResponse();
try {
- ash.handleRemovePolicy(null, rsp, new CommandOperation(AutoScalingParams.CMD_REMOVE_POLICY, collectionSpecificPolicy));
+ 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");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e95534d2/solr/core/src/java/org/apache/solr/cloud/autoscaling/AutoScalingHandler.java
----------------------------------------------------------------------
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 34717d1..83d8663 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
@@ -138,25 +138,7 @@ public class AutoScalingHandler extends RequestHandlerBase implements Permission
// errors have already been added to the response so there's nothing left to do
return;
}
- while (true) {
- AutoScalingConfig initialConfig = container.getZkController().zkStateReader.getAutoScalingConfig();
- AutoScalingConfig currentConfig = initialConfig;
- currentConfig = processOps(req, rsp, ops, currentConfig);
- if (!currentConfig.equals(initialConfig)) {
- // update in ZK
- if (zkSetAutoScalingConfig(container.getZkController().getZkStateReader(), currentConfig)) {
- break;
- } else {
- // someone else updated the config, get the latest one and re-apply our ops
- rsp.getValues().add("retry", "initialVersion=" + initialConfig.getZkVersion());
- continue;
- }
- } else {
- // no changes
- break;
- }
- }
- rsp.getValues().add("result", "success");
+ processOps(req, rsp, ops);
}
} catch (Exception e) {
rsp.getValues().add("result", "failure");
@@ -166,44 +148,61 @@ public class AutoScalingHandler extends RequestHandlerBase implements Permission
}
}
- private AutoScalingConfig processOps(SolrQueryRequest req, SolrQueryResponse rsp, List<CommandOperation> ops, AutoScalingConfig currentConfig) throws KeeperException, InterruptedException, IOException {
- for (CommandOperation op : ops) {
- switch (op.name) {
- case CMD_SET_TRIGGER:
- currentConfig = handleSetTrigger(req, rsp, op, currentConfig);
- break;
- case CMD_REMOVE_TRIGGER:
- currentConfig = handleRemoveTrigger(req, rsp, op, currentConfig);
- break;
- case CMD_SET_LISTENER:
- currentConfig = handleSetListener(req, rsp, op, currentConfig);
- break;
- case CMD_REMOVE_LISTENER:
- currentConfig = handleRemoveListener(req, rsp, op, currentConfig);
- break;
- case CMD_SUSPEND_TRIGGER:
- currentConfig = handleSuspendTrigger(req, rsp, op, currentConfig);
- break;
- case CMD_RESUME_TRIGGER:
- currentConfig = handleResumeTrigger(req, rsp, op, currentConfig);
- break;
- case CMD_SET_POLICY:
- currentConfig = handleSetPolicies(req, rsp, op, currentConfig);
- break;
- case CMD_REMOVE_POLICY:
- currentConfig = handleRemovePolicy(req, rsp, op, currentConfig);
- break;
- case CMD_SET_CLUSTER_PREFERENCES:
- currentConfig = handleSetClusterPreferences(req, rsp, op, currentConfig);
- break;
- case CMD_SET_CLUSTER_POLICY:
- currentConfig = handleSetClusterPolicy(req, rsp, op, currentConfig);
+ public void processOps(SolrQueryRequest req, SolrQueryResponse rsp, List<CommandOperation> ops) throws KeeperException, InterruptedException, IOException {
+ while (true) {
+ AutoScalingConfig initialConfig = container.getZkController().zkStateReader.getAutoScalingConfig();
+ AutoScalingConfig currentConfig = initialConfig;
+ for (CommandOperation op : ops) {
+ switch (op.name) {
+ case CMD_SET_TRIGGER:
+ currentConfig = handleSetTrigger(req, rsp, op, currentConfig);
+ break;
+ case CMD_REMOVE_TRIGGER:
+ currentConfig = handleRemoveTrigger(req, rsp, op, currentConfig);
+ break;
+ case CMD_SET_LISTENER:
+ currentConfig = handleSetListener(req, rsp, op, currentConfig);
+ break;
+ case CMD_REMOVE_LISTENER:
+ currentConfig = handleRemoveListener(req, rsp, op, currentConfig);
+ break;
+ case CMD_SUSPEND_TRIGGER:
+ currentConfig = handleSuspendTrigger(req, rsp, op, currentConfig);
+ break;
+ case CMD_RESUME_TRIGGER:
+ currentConfig = handleResumeTrigger(req, rsp, op, currentConfig);
+ break;
+ case CMD_SET_POLICY:
+ currentConfig = handleSetPolicies(req, rsp, op, currentConfig);
+ break;
+ case CMD_REMOVE_POLICY:
+ currentConfig = handleRemovePolicy(req, rsp, op, currentConfig);
+ break;
+ case CMD_SET_CLUSTER_PREFERENCES:
+ currentConfig = handleSetClusterPreferences(req, rsp, op, currentConfig);
+ break;
+ case CMD_SET_CLUSTER_POLICY:
+ currentConfig = handleSetClusterPolicy(req, rsp, op, currentConfig);
+ break;
+ default:
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown command: " + op.name);
+ }
+ }
+ if (!currentConfig.equals(initialConfig)) {
+ // update in ZK
+ if (zkSetAutoScalingConfig(container.getZkController().getZkStateReader(), currentConfig)) {
break;
- default:
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown command: " + op.name);
+ } else {
+ // someone else updated the config, get the latest one and re-apply our ops
+ rsp.getValues().add("retry", "initialVersion=" + initialConfig.getZkVersion());
+ continue;
+ }
+ } else {
+ // no changes
+ break;
}
}
- return currentConfig;
+ rsp.getValues().add("result", "success");
}
private void handleDiagnostics(SolrQueryResponse rsp, AutoScalingConfig autoScalingConf) throws IOException {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e95534d2/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
index 7f831df..e67912f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrResponse;
+import org.apache.solr.client.solrj.cloud.autoscaling.AutoScalingConfig;
import org.apache.solr.cloud.Overseer.LeaderStatus;
import org.apache.solr.cloud.OverseerTaskQueue.QueueEvent;
import org.apache.solr.common.cloud.ClusterState;
@@ -72,6 +73,7 @@ public class OverseerCollectionConfigSetProcessorTest extends SolrTestCaseJ4 {
private static ZkStateReader zkStateReaderMock;
private static ClusterState clusterStateMock;
private static SolrZkClient solrZkClientMock;
+ private static AutoScalingConfig autoScalingConfig = new AutoScalingConfig(Collections.emptyMap());
private final Map zkMap = new HashMap();
private final Map<String, ClusterState.CollectionRef> collectionsSet = new HashMap<>();
private final List<ZkNodeProps> replicas = new ArrayList<>();
@@ -197,6 +199,7 @@ public class OverseerCollectionConfigSetProcessorTest extends SolrTestCaseJ4 {
when(zkStateReaderMock.getZkClient()).thenReturn(solrZkClientMock);
when(zkStateReaderMock.getClusterState()).thenReturn(clusterStateMock);
+ when(zkStateReaderMock.getAutoScalingConfig()).thenReturn(autoScalingConfig);
when(clusterStateMock.getCollection(anyString())).thenAnswer(invocation -> {
String key = invocation.getArgument(0);