You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2021/03/10 10:09:57 UTC

[lucene] branch jira/solr14003 created (now 6babe26)

This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a change to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git.


      at 6babe26  ZkStateReader#getLeader(String coll, String shard) deprecated

This branch includes the following new commits:

     new bbe6084  javadocs
     new a7777f1  fix DUP
     new c5348d3  fix DUP
     new 1929c2c  deprecate ZkStatereader#getLeaderRetry(String,String)
     new 99d25ef  Fixing CollectionReloadTest by moving OCMH's use of Replica.State.getState() to SSP
     new add7602  compile errs
     new 6babe26  ZkStateReader#getLeader(String coll, String shard) deprecated

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[lucene] 02/07: fix DUP

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit a7777f14a7203c4ac7666b2ab8f61c2a7eeaad98
Author: noble <no...@apache.org>
AuthorDate: Tue Dec 17 15:03:43 2019 +1100

    fix DUP
---
 .../apache/solr/update/processor/DistributedZkUpdateProcessor.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
index 85705f6..510a04f 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
@@ -164,7 +164,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
     Replica leaderReplica = null;
     zkCheck();
     try {
-      leaderReplica = zkController.getZkStateReader().getLeaderRetry(collection, cloudDesc.getShardId());
+      leaderReplica = zkController.getZkStateReader().getShardStateProvider(collection).getLeader(collection, cloudDesc.getShardId(), -1);// getLeaderRetry(collection, cloudDesc.getShardId());
     } catch (InterruptedException e) {
       Thread.interrupted();
       throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, "Exception finding leader for shard " + cloudDesc.getShardId(), e);
@@ -760,7 +760,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
     for (Map.Entry<String,Slice> sliceEntry : slices.entrySet()) {
       Slice replicas = slices.get(sliceEntry.getKey());
       if (onlyLeaders) {
-        Replica replica = docCollection.getLeader(replicas.getName());
+        Replica replica =  req.getCore().getShardStateProvider().getLeader(replicas);// docCollection.getLeader(replicas.getName());
         if (replica != null) {
           ZkCoreNodeProps nodeProps = new ZkCoreNodeProps(replica);
           urls.add(new SolrCmdDistributor.StdNode(nodeProps, collection, replicas.getName()));


[lucene] 06/07: compile errs

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit add7602c31bea5431adf560c64b6d9ba2011007b
Author: noble <no...@apache.org>
AuthorDate: Wed Dec 18 09:31:38 2019 +1100

    compile errs
---
 .../org/apache/solr/cloud/api/collections/CollectionReloadTest.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
index 5255cd0..02e445f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
@@ -51,7 +51,7 @@ public class CollectionReloadTest extends SolrCloudTestCase {
     log.info("testReloadedLeaderStateAfterZkSessionLoss initialized OK ... running test logic");
 
     final String testCollectionName = "c8n_1x1";
-    CollectionAdminRequest.createCollection(testCollectionName, "conf", 1, 1).setExternalState(true)
+    CollectionAdminRequest.createCollection(testCollectionName, "conf", 1, 1)
         .process(cluster.getSolrClient());
 
 


[lucene] 01/07: javadocs

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit bbe6084ac970c62c0f666f021a130a21ae73aa07
Author: noble <no...@apache.org>
AuthorDate: Mon Dec 16 13:46:07 2019 +1100

    javadocs
---
 .../java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java
index 3df4c36..84a172b 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java
@@ -42,10 +42,14 @@ public interface ShardStateProvider {
   Replica getLeader(Slice slice, int timeout) throws InterruptedException;
 
 
+  /** Same as {@link #getLeader(Slice, int)}. But without the Slice Object
+   *
+   */
   Replica getLeader(String collection, String slice, int timeout) throws InterruptedException;
 
 
-  /**CHeck if the replica is active
+  /**Check if the replica is active.
+   * The implementation may also check if the node is a member of /live_nodes
    *
    */
   boolean isActive(Replica replica);


[lucene] 03/07: fix DUP

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit c5348d314746c177880c6ef7e72e3182f6573e4c
Author: noble <no...@apache.org>
AuthorDate: Tue Dec 17 15:12:46 2019 +1100

    fix DUP
---
 .../apache/solr/update/processor/DistributedZkUpdateProcessor.java   | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
index 510a04f..ffa0a23 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
@@ -820,7 +820,6 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
   }
 
   protected List<SolrCmdDistributor.Node> getReplicaNodesForLeader(String shardId, Replica leaderReplica) {
-    ShardStateProvider ssp = zkController.getZkStateReader().getShardStateProvider(leaderReplica.collection);
     String leaderCoreNodeName = leaderReplica.getName();
     List<Replica> replicas = clusterState.getCollection(collection)
         .getSlice(shardId)
@@ -850,7 +849,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
         log.debug("skip url:{} cause its term is less than leader", replica.getCoreUrl());
         skippedCoreNodeNames.add(replica.getName());
       } else if (!clusterState.getLiveNodes().contains(replica.getNodeName())
-          || ssp.getState(replica) == Replica.State.DOWN) {
+          || req.getCore().getShardStateProvider().getState(replica) == Replica.State.DOWN) {
         skippedCoreNodeNames.add(replica.getName());
       } else {
         nodes.add(new SolrCmdDistributor.StdNode(new ZkCoreNodeProps(replica), collection, shardId));
@@ -927,7 +926,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
                       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
                           "No active slices serving " + id + " found for target collection: " + rule.getTargetCollectionName());
                     }
-                    Replica targetLeader = targetColl.getLeader(activeSlices.iterator().next().getName());
+                    Replica targetLeader = req.getCore().getShardStateProvider().getLeader(activeSlices.iterator().next());
                     nodes = new ArrayList<>(1);
                     nodes.add(new SolrCmdDistributor.StdNode(new ZkCoreNodeProps(targetLeader)));
                     break;


[lucene] 04/07: deprecate ZkStatereader#getLeaderRetry(String, String)

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 1929c2c624e1a8a17402dc0fda77c2c04fb7faf2
Author: noble <no...@apache.org>
AuthorDate: Wed Dec 18 07:58:39 2019 +1100

    deprecate ZkStatereader#getLeaderRetry(String,String)
---
 solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java    | 3 +--
 solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java | 3 +--
 .../solr/update/processor/DistributedZkUpdateProcessor.java       | 2 +-
 .../src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java   | 3 +--
 solr/core/src/test/org/apache/solr/cloud/DeleteReplicaTest.java   | 4 ++--
 .../test/org/apache/solr/cloud/DistributedVersionInfoTest.java    | 2 +-
 .../test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java  | 2 +-
 .../src/test/org/apache/solr/cloud/HttpPartitionOnCommitTest.java | 6 +++---
 solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java   | 6 +++---
 solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java    | 2 +-
 .../org/apache/solr/cloud/api/collections/TestCollectionAPI.java  | 8 ++++----
 .../src/java/org/apache/solr/common/cloud/ZkStateReader.java      | 2 ++
 .../java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java | 2 +-
 .../src/java/org/apache/solr/cloud/ChaosMonkey.java               | 2 +-
 14 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
index 9dd5d58..1148fa9 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -355,8 +355,7 @@ public class RecoveryStrategy implements Runnable, Closeable {
                                                                                             // though
       try {
         CloudDescriptor cloudDesc = this.coreDescriptor.getCloudDescriptor();
-        ZkNodeProps leaderprops = zkStateReader.getLeaderRetry(
-            cloudDesc.getCollectionName(), cloudDesc.getShardId());
+        ZkNodeProps leaderprops = core.getShardStateProvider().getLeader(cloudDesc.getCollectionName(), cloudDesc.getShardId(), -1);
         final String leaderBaseUrl = leaderprops.getStr(ZkStateReader.BASE_URL_PROP);
         final String leaderCoreName = leaderprops.getStr(ZkStateReader.CORE_NAME_PROP);
 
diff --git a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
index e4727da..2cb89e8 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
@@ -638,8 +638,7 @@ public class SolrCmdDistributor implements Closeable {
       if (doRetry) {
         ZkCoreNodeProps leaderProps;
         try {
-          leaderProps = new ZkCoreNodeProps(zkStateReader.getLeaderRetry(
-              collection, shardId));
+          leaderProps = new ZkCoreNodeProps(zkStateReader.getShardStateProvider(collection).getLeader(collection, shardId, -1));
         } catch (InterruptedException e) {
           Thread.currentThread().interrupt();
           return false;
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
index ffa0a23..d9fa04e 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
@@ -801,7 +801,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
     Slice mySlice = coll.getSlice(myShardId);
     final Slice.State state = mySlice.getState();
     if (state == Slice.State.CONSTRUCTION || state == Slice.State.RECOVERY) {
-      Replica myLeader = zkController.getZkStateReader().getLeaderRetry(collection, myShardId);
+      Replica myLeader = req.getCore().getShardStateProvider().getLeader(collection, myShardId, -1);
       boolean amILeader = myLeader.getName().equals(cloudDesc.getCoreNodeName());
       if (amILeader) {
         // Does the document belong to my hash range as well?
diff --git a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
index 65d1c59..8f8f51d 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
@@ -115,8 +115,7 @@ public class BasicDistributedZk2Test extends AbstractFullDistribZkTestBase {
       // TODO: bring this to its own method?
       // try indexing to a leader that has no replicas up
       ZkStateReader zkStateReader = cloudClient.getZkStateReader();
-      ZkNodeProps leaderProps = zkStateReader.getLeaderRetry(
-          DEFAULT_COLLECTION, SHARD2);
+      ZkNodeProps leaderProps = zkStateReader.getShardStateProvider(DEFAULT_COLLECTION).getLeader(DEFAULT_COLLECTION, SHARD2, -1);
       
       String nodeName = leaderProps.getStr(ZkStateReader.NODE_NAME_PROP);
       chaosMonkey.stopShardExcept(SHARD2, nodeName);
diff --git a/solr/core/src/test/org/apache/solr/cloud/DeleteReplicaTest.java b/solr/core/src/test/org/apache/solr/cloud/DeleteReplicaTest.java
index 5dd6b3e..21019cb 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DeleteReplicaTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DeleteReplicaTest.java
@@ -153,7 +153,7 @@ public class DeleteReplicaTest extends SolrCloudTestCase {
     final String collectionName = "deletereplica_test";
     CollectionAdminRequest.createCollection(collectionName, "conf", 1, 2).process(cluster.getSolrClient());
 
-    Replica leader = cluster.getSolrClient().getZkStateReader().getLeaderRetry(collectionName, "shard1");
+    Replica leader = cluster.getSolrClient().getZkStateReader().getShardStateProvider(collectionName). getLeader(collectionName, "shard1", -1);
 
     //Confirm that the instance and data directory exist
     CoreStatus coreStatus = getCoreStatus(leader);
@@ -163,7 +163,7 @@ public class DeleteReplicaTest extends SolrCloudTestCase {
     CollectionAdminRequest.deleteReplica(collectionName, "shard1",leader.getName())
         .process(cluster.getSolrClient());
 
-    Replica newLeader = cluster.getSolrClient().getZkStateReader().getLeaderRetry(collectionName, "shard1");
+    Replica newLeader = cluster.getSolrClient().getZkStateReader().getShardStateProvider(collectionName).getLeader(collectionName, "shard1", -1);
 
     assertFalse(leader.equals(newLeader));
 
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
index 644ec9a..20d8c71 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
@@ -86,7 +86,7 @@ public class DistributedVersionInfoTest extends SolrCloudTestCase {
     stateReader.waitForState(COLLECTION, DEFAULT_TIMEOUT, TimeUnit.SECONDS,
         (n, c, ssp) -> DocCollection.isFullyActive(ssp, c, 1, 3));
 
-    final Replica leader = stateReader.getLeaderRetry(COLLECTION, shardId);
+    final Replica leader = stateReader.getShardStateProvider(COLLECTION).getLeader(COLLECTION, shardId, -1);
 
     // start by reloading the empty collection so we try to calculate the max from an empty index
     reloadCollection(leader, COLLECTION);
diff --git a/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java b/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
index d6cbf9b..1d1238e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
@@ -404,7 +404,7 @@ public class FullSolrCloudDistribCmdsTest extends AbstractFullDistribZkTestBase
 
   private long testThatCantForwardToLeaderFails(long docId) throws Exception {
     ZkStateReader zkStateReader = cloudClient.getZkStateReader();
-    ZkNodeProps props = zkStateReader.getLeaderRetry(DEFAULT_COLLECTION, "shard1");
+    ZkNodeProps props = zkStateReader.getShardStateProvider(DEFAULT_COLLECTION).getLeader(DEFAULT_COLLECTION, "shard1", -1);
     
     chaosMonkey.stopShard("shard1");
     
diff --git a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionOnCommitTest.java b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionOnCommitTest.java
index 7a17d6f..39f0778 100644
--- a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionOnCommitTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionOnCommitTest.java
@@ -90,13 +90,13 @@ public class HttpPartitionOnCommitTest extends BasicDistributedZkTest {
 
     ShardStateProvider shardStateProvider = cloudClient.getZkStateReader().getShardStateProvider(testCollectionName);
     // let's put the leader in its own partition, no replicas can contact it now
-    Replica leader = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard1");
+    Replica leader = cloudClient.getZkStateReader().getShardStateProvider(testCollectionName).getLeader(testCollectionName, "shard1", -1);
     log.info("Creating partition to leader at "+leader.getCoreUrl());
     SocketProxy leaderProxy = getProxyForReplica(leader);
     leaderProxy.close();
 
     // let's find the leader of shard2 and ask him to commit
-    Replica shard2Leader = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard2");
+    Replica shard2Leader = cloudClient.getZkStateReader().getShardStateProvider(testCollectionName). getLeader(testCollectionName, "shard2", -1);
     sendCommitWithRetry(shard2Leader);
 
     Thread.sleep(sleepMsBeforeHealPartition);
@@ -148,7 +148,7 @@ public class HttpPartitionOnCommitTest extends BasicDistributedZkTest {
     Thread.sleep(sleepMsBeforeHealPartition);
 
     cloudClient.getZkStateReader().forceUpdateCollection(testCollectionName); // get the latest state
-    leader = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard1");
+    leader = cloudClient.getZkStateReader().getShardStateProvider(testCollectionName).getLeader(testCollectionName, "shard1", -1);
     assertSame("Leader was not active", Replica.State.ACTIVE, ssp.getState(leader));
 
     log.info("Healing partitioned replica at "+leader.getCoreUrl());
diff --git a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
index ce38941..526bea7 100644
--- a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
@@ -399,7 +399,7 @@ public class HttpPartitionTest extends AbstractFullDistribZkTestBase {
         notLeaders.size() == 1);
 
     Replica leader =
-        cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard1");
+        cloudClient.getZkStateReader().getShardStateProvider(testCollectionName).getLeader(testCollectionName, "shard1", -1);
     String leaderNode = leader.getNodeName();
     assertNotNull("Could not find leader for shard1 of "+
         testCollectionName+"; clusterState: "+printClusterStateInfo(testCollectionName), leader);
@@ -419,7 +419,7 @@ public class HttpPartitionTest extends AbstractFullDistribZkTestBase {
       String currentLeaderName = null;
       try {
         Replica currentLeader =
-            cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard1");
+            cloudClient.getZkStateReader().getShardStateProvider(testCollectionName). getLeader(testCollectionName, "shard1", -1);
         currentLeaderName = currentLeader.getName();
       } catch (Exception exc) {}
 
@@ -430,7 +430,7 @@ public class HttpPartitionTest extends AbstractFullDistribZkTestBase {
     }
 
     Replica currentLeader =
-        cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard1");
+        cloudClient.getZkStateReader().getShardStateProvider(testCollectionName).getLeader(testCollectionName, "shard1", -1);
     assertEquals(expectedNewLeaderCoreNodeName, currentLeader.getName());
 
     // TODO: This test logic seems to be timing dependent and fails on Jenkins
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java b/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
index e593c63..d648b78 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
@@ -73,7 +73,7 @@ public class TestPrepRecovery extends SolrCloudTestCase {
         .process(solrClient);
 
     // now delete the leader
-    Replica leader = solrClient.getZkStateReader().getLeaderRetry(collectionName, "shard1");
+    Replica leader = solrClient.getZkStateReader().getShardStateProvider(collectionName). getLeader(collectionName, "shard1", -1);
     CollectionAdminRequest.deleteReplica(collectionName, "shard1", leader.getName())
         .process(solrClient);
 
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
index 39dd068..ec4fd00 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
@@ -25,18 +25,18 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 
 import com.google.common.collect.Lists;
-import org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteSolrException;
-import org.apache.solr.cloud.ZkTestServer;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteSolrException;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.client.solrj.request.V2Request;
+import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.cloud.ZkTestServer;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.ClusterState;
@@ -541,7 +541,7 @@ public class TestCollectionAPI extends ReplicaPropertiesBase {
   private void clusterStatusRolesTest() throws Exception  {
     try (CloudSolrClient client = createCloudClient(null)) {
       client.connect();
-      Replica replica = client.getZkStateReader().getLeaderRetry(DEFAULT_COLLECTION, SHARD1);
+      Replica replica = client.getZkStateReader().getShardStateProvider(DEFAULT_COLLECTION). getLeader(DEFAULT_COLLECTION, SHARD1, -1);
 
       ModifiableSolrParams params = new ModifiableSolrParams();
       params.set("action", CollectionParams.CollectionAction.ADDROLE.toString());
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index f84da1c..d1ade98 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -970,7 +970,9 @@ public class ZkStateReader implements SolrCloseable {
 
   /**
    * Get shard leader properties, with retry if none exist.
+   * use {@link ShardStateProvider#getLeader(String, String, int)} instead
    */
+  @Deprecated
   public Replica getLeaderRetry(String collection, String shard) throws InterruptedException {
     return getLeaderRetry(collection, shard, GET_LEADER_RETRY_DEFAULT_TIMEOUT);
   }
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
index a552aaf..fb9c6b6 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
@@ -2083,7 +2083,7 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
     while (System.nanoTime() < timeout) {
       Replica tmp = null;
       try {
-        tmp = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, shardId);
+        tmp = cloudClient.getZkStateReader().getShardStateProvider(testCollectionName).getLeader(testCollectionName, shardId, -1);
       } catch (Exception exc) {}
       if (tmp != null && "active".equals(tmp.getStr(ZkStateReader.STATE_PROP))) {
         leader = tmp;
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
index bffcd46..138346d 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
@@ -354,7 +354,7 @@ public class ChaosMonkey {
       
       ZkNodeProps leader = null;
       try {
-        leader = zkStateReader.getLeaderRetry(collection, slice);
+        leader = zkStateReader.getShardStateProvider(collection).getLeader(collection, slice, -1);
       } catch (Throwable t) {
         log.error("Could not get leader", t);
         return null;


[lucene] 07/07: ZkStateReader#getLeader(String coll, String shard) deprecated

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 6babe266e560928d130365037b8234648c7b97ea
Author: noble <no...@apache.org>
AuthorDate: Wed Dec 18 12:04:07 2019 +1100

    ZkStateReader#getLeader(String coll, String shard) deprecated
---
 .../src/java/org/apache/solr/cloud/ElectionContext.java   |  2 +-
 .../update/processor/DistributedZkUpdateProcessor.java    |  2 +-
 .../apache/solr/client/solrj/cloud/DirectShardState.java  | 15 ++++++++++++++-
 .../solr/client/solrj/cloud/ShardStateProvider.java       |  3 ++-
 .../client/solrj/impl/BaseHttpClusterStateProvider.java   |  2 +-
 .../solr/client/solrj/impl/ClusterStateProvider.java      |  8 +++++++-
 .../java/org/apache/solr/common/cloud/ZkStateReader.java  |  5 ++++-
 7 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
index 1585440..5a51aaa 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
@@ -232,7 +232,7 @@ class ShardLeaderElectionContextBase extends ElectionContext {
     boolean isAlreadyLeader = false;
     if (zkStateReader.getClusterState() != null &&
         zkStateReader.getClusterState().getCollection(collection).getSlice(shardId).getReplicas().size() < 2) {
-      Replica leader = zkStateReader.getLeader(collection, shardId);
+      Replica leader =  zkStateReader.getShardStateProvider(collection).getLeader(collection, shardId);
       if (leader != null
           && leader.getBaseUrl().equals(leaderProps.get(ZkStateReader.BASE_URL_PROP))
           && leader.getCoreName().equals(leaderProps.get(ZkStateReader.CORE_NAME_PROP))) {
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
index d9fa04e..d73d73a 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
@@ -1124,7 +1124,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
         Exception getLeaderExc = null;
         Replica leaderProps = null;
         try {
-          leaderProps = zkController.getZkStateReader().getLeader(collection, shardId);
+          leaderProps = req.getCore().getShardStateProvider().getLeader(collection, shardId);
           if (leaderProps != null) {
             leaderCoreNodeName = leaderProps.getName();
           }
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DirectShardState.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DirectShardState.java
index 9fb987a..169acf8 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DirectShardState.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DirectShardState.java
@@ -17,8 +17,10 @@
 
 package org.apache.solr.client.solrj.cloud;
 
+import java.util.function.Function;
 import java.util.function.Predicate;
 
+import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 
@@ -28,9 +30,11 @@ import org.apache.solr.common.cloud.Slice;
 public class DirectShardState implements ShardStateProvider {
 
   private final Predicate<String> isNodeLive;
+  private final Function<String , DocCollection> collectionProvider;
 
-  public DirectShardState(Predicate<String> isNodeLive) {
+  public DirectShardState(Predicate<String> isNodeLive, Function<String, DocCollection> collectionProvider) {
     this.isNodeLive = isNodeLive;
+    this.collectionProvider = collectionProvider;
   }
 
   @Override
@@ -44,6 +48,15 @@ public class DirectShardState implements ShardStateProvider {
   }
 
   @Override
+  public Replica getLeader(String coll, String slice) {
+    DocCollection c = collectionProvider.apply(coll);
+    if (c == null) return null;
+    Slice sl = c.getSlice(slice);
+    if (sl == null) return null;
+    return getLeader(sl);
+  }
+
+  @Override
   public boolean isActive(Replica replica) {
     return  replica.getNodeName() != null &&
         replica.getState() == Replica.State.ACTIVE &&
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java
index 84a172b..10a69a1 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/ShardStateProvider.java
@@ -35,13 +35,14 @@ public interface ShardStateProvider {
    */
   Replica getLeader(Slice slice);
 
+  Replica getLeader(String coll, String slice);
+
   /**Get the leader of the slice. Wait for one if there is no leader
    * @param timeout how much time to wait for a leader to com eup. -1 means the default value will be used
    * Throws an {@link InterruptedException} if interrupted in between
    */
   Replica getLeader(Slice slice, int timeout) throws InterruptedException;
 
-
   /** Same as {@link #getLeader(Slice, int)}. But without the Slice Object
    *
    */
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
index 9528690..afc1999 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
@@ -329,7 +329,7 @@ public abstract class BaseHttpClusterStateProvider implements ClusterStateProvid
   private class NotACollectionException extends Exception {
   }
 
-  private ShardStateProvider shardStateProvider = new DirectShardState(s -> getLiveNodes().contains(s));
+  private ShardStateProvider shardStateProvider = new DirectShardState(s -> getLiveNodes().contains(s), coll -> getClusterState().getCollectionOrNull(coll));
   @Override
   public ShardStateProvider getShardStateProvider(String coll) {
     return shardStateProvider;
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ClusterStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ClusterStateProvider.java
index 58bf548..07c9294 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ClusterStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ClusterStateProvider.java
@@ -110,7 +110,13 @@ public interface ClusterStateProvider extends SolrCloseable {
   String getPolicyNameByCollection(String coll);
 
   default ShardStateProvider getShardStateProvider(String coll) {
-    return new DirectShardState(s -> getLiveNodes().contains(s)) ;
+    return new DirectShardState(s -> getLiveNodes().contains(s), s -> {
+      try {
+        return getCollection(s);
+      } catch (IOException e) {
+        throw new RuntimeException(e);
+      }
+    }) ;
   }
 
   void connect();
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index d1ade98..bff4e7d 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -219,7 +219,7 @@ public class ZkStateReader implements SolrCloseable {
 
   private Set<ClusterPropertiesListener> clusterPropertiesListeners = ConcurrentHashMap.newKeySet();
 
-  private final ShardStateProvider directReplicaState = new DirectShardState(s -> liveNodes.contains(s)) {
+  private final ShardStateProvider directReplicaState = new DirectShardState(s -> liveNodes.contains(s), s -> clusterState.getCollectionOrNull(s)) {
     @Override
     public Replica getLeader(Slice slice, int timeout) throws InterruptedException {
       return getLeaderRetry(slice.collection, slice.getName(), timeout);
@@ -952,6 +952,9 @@ public class ZkStateReader implements SolrCloseable {
     return null;
   }
 
+  /**Use {@link ShardStateProvider#getLeader(String, String)} instead
+   */
+  @Deprecated
   public Replica getLeader(String collection, String shard) {
     if (clusterState != null) {
       DocCollection docCollection = clusterState.getCollectionOrNull(collection);


[lucene] 05/07: Fixing CollectionReloadTest by moving OCMH's use of Replica.State.getState() to SSP

Posted by dw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch jira/solr14003
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 99d25ef335c37d460d2f0b6f759050bde5beef53
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Wed Dec 18 03:29:56 2019 +0530

    Fixing CollectionReloadTest by moving OCMH's use of Replica.State.getState() to SSP
---
 .../solr/cloud/api/collections/OverseerCollectionMessageHandler.java    | 2 +-
 .../org/apache/solr/cloud/api/collections/CollectionReloadTest.java     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
index 13bb2da..e909860 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
@@ -969,7 +969,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
                   Slice slice, ShardHandler shardHandler) {
       List<Replica> notLiveReplicas = new ArrayList<>();
       for (Replica replica : slice.getReplicas()) {
-        if ((stateMatcher == null || Replica.State.getState(replica.getStr(ZkStateReader.STATE_PROP)) == stateMatcher)) {
+        if ((stateMatcher == null || zkStateReader.getShardStateProvider(replica.getCollection()).getState(replica) == stateMatcher)) {
           if (clusterState.liveNodesContain(replica.getStr(ZkStateReader.NODE_NAME_PROP))) {
             // For thread safety, only simple clone the ModifiableSolrParams
             ModifiableSolrParams cloneParams = new ModifiableSolrParams();
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
index 02e445f..5255cd0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
@@ -51,7 +51,7 @@ public class CollectionReloadTest extends SolrCloudTestCase {
     log.info("testReloadedLeaderStateAfterZkSessionLoss initialized OK ... running test logic");
 
     final String testCollectionName = "c8n_1x1";
-    CollectionAdminRequest.createCollection(testCollectionName, "conf", 1, 1)
+    CollectionAdminRequest.createCollection(testCollectionName, "conf", 1, 1).setExternalState(true)
         .process(cluster.getSolrClient());