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;