You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2018/03/05 09:34:58 UTC
lucene-solr:branch_7x: SOLR-12011: Remove FORCEPREPAREFORLEADERSHIP
Repository: lucene-solr
Updated Branches:
refs/heads/branch_7x f711d475b -> d7824a379
SOLR-12011: Remove FORCEPREPAREFORLEADERSHIP
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/d7824a37
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/d7824a37
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/d7824a37
Branch: refs/heads/branch_7x
Commit: d7824a3793f8ec697a6f9a4f12eeb052a68b4782
Parents: f711d47
Author: Cao Manh Dat <da...@apache.org>
Authored: Mon Mar 5 16:33:45 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Mon Mar 5 16:34:38 2018 +0700
----------------------------------------------------------------------
.../solr/handler/admin/CollectionsHandler.java | 18 ---
.../solr/handler/admin/CoreAdminOperation.java | 15 ---
.../org/apache/solr/cloud/ForceLeaderTest.java | 114 -------------------
.../client/solrj/request/CoreApiMapping.java | 3 +-
4 files changed, 1 insertion(+), 149 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d7824a37/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
----------------------------------------------------------------------
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 db70796..9824970 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
@@ -50,7 +50,6 @@ import org.apache.solr.cloud.OverseerTaskQueue;
import org.apache.solr.cloud.OverseerTaskQueue.QueueEvent;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.cloud.ZkShardTerms;
-import org.apache.solr.cloud.api.collections.OverseerCollectionMessageHandler;
import org.apache.solr.cloud.overseer.SliceMutator;
import org.apache.solr.cloud.rule.ReplicaAssigner;
import org.apache.solr.cloud.rule.Rule;
@@ -73,9 +72,7 @@ import org.apache.solr.common.params.AutoScalingParams;
import org.apache.solr.common.params.CollectionAdminParams;
import org.apache.solr.common.params.CollectionParams;
import org.apache.solr.common.params.CollectionParams.CollectionAction;
-import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.CoreAdminParams;
-import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
@@ -87,7 +84,6 @@ import org.apache.solr.core.backup.repository.BackupRepository;
import org.apache.solr.core.snapshots.CollectionSnapshotMetaData;
import org.apache.solr.core.snapshots.SolrSnapshotManager;
import org.apache.solr.handler.RequestHandlerBase;
-import org.apache.solr.handler.component.ShardHandler;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -1153,20 +1149,6 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
}
}
- // Call all live replicas to prepare themselves for leadership, e.g. set last published
- // state to active.
- for (Replica rep : liveReplicas) {
- ShardHandler shardHandler = handler.coreContainer.getShardHandlerFactory().getShardHandler();
-
- ModifiableSolrParams params = new ModifiableSolrParams();
- params.set(CoreAdminParams.ACTION, CoreAdminAction.FORCEPREPAREFORLEADERSHIP.toString());
- params.set(CoreAdminParams.CORE, rep.getStr("core"));
- String nodeName = rep.getNodeName();
-
- OverseerCollectionMessageHandler.sendShardRequest(nodeName, params, shardHandler, null, null,
- CommonParams.CORES_HANDLER_PATH, handler.coreContainer.getZkController().getZkStateReader()); // synchronous request
- }
-
// Wait till we have an active leader
boolean success = false;
for (int i = 0; i < 9; i++) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d7824a37/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
index 179589b..6e51446 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
@@ -220,21 +220,6 @@ enum CoreAdminOperation implements CoreAdminOp {
}
}),
INVOKE_OP(INVOKE, new InvokeOp()),
- FORCEPREPAREFORLEADERSHIP_OP(FORCEPREPAREFORLEADERSHIP, it -> {
- final SolrParams params = it.req.getParams();
-
- log().info("I have been forcefully prepare myself for leadership.");
- ZkController zkController = it.handler.coreContainer.getZkController();
- if (zkController == null) {
- throw new SolrException(ErrorCode.BAD_REQUEST, "Only valid for SolrCloud");
- }
-
- String cname = params.get(CoreAdminParams.CORE);
- if (cname == null) {
- throw new IllegalArgumentException(CoreAdminParams.CORE + " is required");
- }
- }),
-
BACKUPCORE_OP(BACKUPCORE, new BackupCoreOp()),
RESTORECORE_OP(RESTORECORE, new RestoreCoreOp()),
CREATESNAPSHOT_OP(CREATESNAPSHOT, new CreateSnapshotOp()),
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d7824a37/solr/core/src/test/org/apache/solr/cloud/ForceLeaderTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ForceLeaderTest.java b/solr/core/src/test/org/apache/solr/cloud/ForceLeaderTest.java
index 43a37e4..91f95f6 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ForceLeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ForceLeaderTest.java
@@ -24,28 +24,15 @@ import java.util.List;
import java.util.Properties;
import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrRequest.METHOD;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.cloud.DistributedQueue;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.GenericSolrRequest;
-import org.apache.solr.client.solrj.response.SimpleSolrResponse;
-import org.apache.solr.cloud.overseer.OverseerAction;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Replica.State;
-import org.apache.solr.common.cloud.ZkNodeProps;
-import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.params.CoreAdminParams;
-import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.Utils;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.KeeperException.NoNodeException;
import org.junit.Ignore;
@@ -53,8 +40,6 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
-
public class ForceLeaderTest extends HttpPartitionTest {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final boolean onlyLeaderIndexes = random().nextBoolean();
@@ -330,105 +315,6 @@ public class ForceLeaderTest extends HttpPartitionTest {
}
}
- /**
- * Test that FORCELEADER can set last published state of all down (live) replicas to active (so
- * that they become worthy candidates for leader election).
- */
- @Slow
- public void testLastPublishedStateIsActive() throws Exception {
- handle.put("maxScore", SKIPVAL);
- handle.put("timestamp", SKIPVAL);
-
- String testCollectionName = "forceleader_last_published";
- createOldLirCollection(testCollectionName, 3);
- cloudClient.setDefaultCollection(testCollectionName);
- log.info("Collection created: " + testCollectionName);
-
- try {
- List<Replica> notLeaders = ensureAllReplicasAreActive(testCollectionName, SHARD1, 1, 3, maxWaitSecsToSeeAllActive);
- assertEquals("Expected 2 replicas for collection " + testCollectionName
- + " but found " + notLeaders.size() + "; clusterState: "
- + printClusterStateInfo(testCollectionName), 2, notLeaders.size());
-
- Replica leader = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, SHARD1);
- JettySolrRunner notLeader0 = getJettyOnPort(getReplicaPort(notLeaders.get(0)));
- ZkController zkController = notLeader0.getCoreContainer().getZkController();
-
- // Mark all replicas down
- setReplicaState(testCollectionName, SHARD1, leader, State.DOWN);
- for (Replica rep : notLeaders) {
- setReplicaState(testCollectionName, SHARD1, rep, State.DOWN);
- }
-
- zkController.getZkStateReader().forceUpdateCollection(testCollectionName);
- // Assert all replicas are down and that there is no leader
- assertEquals(0, getActiveOrRecoveringReplicas(testCollectionName, SHARD1).size());
-
- // Now force leader
- doForceLeader(cloudClient, testCollectionName, SHARD1);
-
- // Assert that last published states of the two replicas are active now
- for (Replica rep: notLeaders) {
- assertEquals(Replica.State.ACTIVE, getLastPublishedState(testCollectionName, SHARD1, rep));
- }
- } finally {
- log.info("Cleaning up after the test.");
- attemptCollectionDelete(cloudClient, testCollectionName);
- }
- }
-
- protected void setReplicaState(String collection, String slice, Replica replica, Replica.State state) throws Exception {
- DistributedQueue inQueue = Overseer.getStateUpdateQueue(cloudClient.getZkStateReader().getZkClient());
- ZkStateReader zkStateReader = cloudClient.getZkStateReader();
-
- String baseUrl = zkStateReader.getBaseUrlForNodeName(replica.getNodeName());
- ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.STATE.toLower(),
- ZkStateReader.BASE_URL_PROP, baseUrl,
- ZkStateReader.NODE_NAME_PROP, replica.getNodeName(),
- ZkStateReader.SHARD_ID_PROP, slice,
- ZkStateReader.COLLECTION_PROP, collection,
- ZkStateReader.CORE_NAME_PROP, replica.getStr(CORE_NAME_PROP),
- ZkStateReader.CORE_NODE_NAME_PROP, replica.getName(),
- ZkStateReader.STATE_PROP, state.toString());
- inQueue.offer(Utils.toJSON(m));
- boolean transition = false;
-
- Replica.State replicaState = null;
- for (int counter = 10; counter > 0; counter--) {
- ClusterState clusterState = zkStateReader.getClusterState();
- replicaState = clusterState.getCollection(collection).getSlice(slice).getReplica(replica.getName()).getState();
- if (replicaState == state) {
- transition = true;
- break;
- }
- Thread.sleep(1000);
- }
-
- if (!transition) {
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Could not set replica [" + replica.getName() + "] as " + state +
- ". Last known state of the replica: " + replicaState);
- }
- }
-
- protected Replica.State getLastPublishedState(String collection, String slice, Replica replica) throws SolrServerException, IOException,
- KeeperException, InterruptedException {
- ZkStateReader zkStateReader = cloudClient.getZkStateReader();
- String baseUrl = zkStateReader.getBaseUrlForNodeName(replica.getNodeName());
-
- ModifiableSolrParams params = new ModifiableSolrParams();
- params.set(CoreAdminParams.ACTION, CoreAdminAction.STATUS.toString());
- params.set(CoreAdminParams.CORE, replica.getStr("core"));
-
- SolrRequest<SimpleSolrResponse> req = new GenericSolrRequest(METHOD.GET, "/admin/cores", params);
- NamedList resp = null;
- try (HttpSolrClient hsc = getHttpSolrClient(baseUrl)) {
- resp = hsc.request(req);
- }
-
- String lastPublished = (((NamedList<NamedList<String>>)resp.get("status")).get(replica.getStr("core"))).get("lastPublished");
- return Replica.State.getState(lastPublished);
- }
-
void assertSendDocFails(int docId) throws Exception {
// sending a doc in this state fails
try {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d7824a37/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
index b5ce920..9d8aa6e 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
@@ -56,8 +56,7 @@ public class CoreApiMapping {
REQUESTSTATUS(PER_CORE_COMMANDS, GET, CoreAdminAction.REQUESTSTATUS, "request-status", null),/*TODO*/
OVERSEEROP(NODEAPIS, POST, CoreAdminAction.OVERSEEROP, "overseer-op", null),
REJOINLEADERELECTION(NODEAPIS, POST, CoreAdminAction.REJOINLEADERELECTION, "rejoin-leader-election", null),
- INVOKE(NODEINVOKE, GET, CoreAdminAction.INVOKE,"invoke", null),
- FORCEPREPAREFORLEADERSHIP(PER_CORE_COMMANDS, POST, CoreAdminAction.FORCEPREPAREFORLEADERSHIP, "force-prepare-for-leadership", null);
+ INVOKE(NODEINVOKE, GET, CoreAdminAction.INVOKE,"invoke", null);
public final String commandName;
public final EndPoint endPoint;