You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/08/12 02:25:24 UTC

[lucene-solr] branch reference_impl_dev updated: @518 Allow more lazy collection caching.

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

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/reference_impl_dev by this push:
     new fd68920  @518 Allow more lazy collection caching.
fd68920 is described below

commit fd68920e642226f2faabaae4505adcf1c8107a73
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Aug 11 21:24:49 2020 -0500

    @518 Allow more lazy collection caching.
---
 solr/core/src/java/org/apache/solr/api/V2HttpCall.java              | 2 +-
 solr/core/src/java/org/apache/solr/cloud/CloudUtil.java             | 6 +++---
 .../src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java  | 2 +-
 solr/core/src/java/org/apache/solr/cloud/ZkController.java          | 2 +-
 .../core/src/java/org/apache/solr/cloud/api/collections/Assign.java | 2 +-
 .../org/apache/solr/cloud/api/collections/DeleteCollectionCmd.java  | 2 +-
 solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java   | 2 +-
 solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java | 2 +-
 solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java   | 2 +-
 solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java        | 2 +-
 .../apache/solr/update/processor/DistributedZkUpdateProcessor.java  | 6 +++---
 solr/core/src/java/org/apache/solr/util/SolrLogLayout.java          | 2 +-
 .../solrj/cloud/autoscaling/DelegatingClusterStateProvider.java     | 2 +-
 .../org/apache/solr/client/solrj/impl/ClusterStateProvider.java     | 2 +-
 solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java  | 4 ++--
 solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java | 2 +-
 16 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
index ac1d6dc..1ed461b 100644
--- a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
+++ b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
@@ -204,7 +204,7 @@ public class V2HttpCall extends HttpSolrCall {
       String collectionName = collectionsList.get(0); // first
       //TODO an option to choose another collection in the list if can't find a local replica of the first?
 
-      return zkStateReader.getClusterState().getCollectionOrNull(collectionName);
+      return zkStateReader.getClusterState().getCollectionOrNull(collectionName, true);
     };
 
     DocCollection docCollection = logic.get();
diff --git a/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java b/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
index 5321b1d..4918e14 100644
--- a/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
+++ b/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
@@ -70,7 +70,7 @@ public class CloudUtil {
     log.debug("checkSharedFSFailoverReplaced running for coreNodeName={} baseUrl={}", thisCnn, thisBaseUrl);
 
     // if we see our core node name on a different base url, unload
-    final DocCollection docCollection = zkController.getClusterState().getCollectionOrNull(desc.getCloudDescriptor().getCollectionName());
+    final DocCollection docCollection = zkController.getClusterState().getCollectionOrNull(desc.getCloudDescriptor().getCollectionName(), true);
     if (docCollection != null && docCollection.getSlicesMap() != null) {
       Map<String,Slice> slicesMap = docCollection.getSlicesMap();
       for (Slice slice : slicesMap.values()) {
@@ -105,7 +105,7 @@ public class CloudUtil {
   }
 
   public static boolean replicaExists(ClusterState clusterState, String collection, String shard, String coreNodeName) {
-    DocCollection docCollection = clusterState.getCollectionOrNull(collection);
+    DocCollection docCollection = clusterState.getCollectionOrNull(collection, true);
     if (docCollection != null) {
       Slice slice = docCollection.getSlice(shard);
       if (slice != null) {
@@ -203,7 +203,7 @@ public class CloudUtil {
     DocCollection coll = null;
     while (!timeout.hasTimedOut()) {
       state = cloudManager.getClusterStateProvider().getClusterState();
-      coll = state.getCollectionOrNull(collection);
+      coll = state.getCollectionOrNull(collection, true);
       // due to the way we manage collections in SimClusterStateProvider a null here
       // can mean that a collection is still being created but has no replicas
       if (coll == null) { // does not yet exist?
diff --git a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java
index 1f09182..17b87f4 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContext.java
@@ -391,7 +391,7 @@ final class ShardLeaderElectionContext extends ShardLeaderElectionContextBase {
    */
   private boolean replicasWithHigherTermParticipated(ZkShardTerms zkShardTerms, String coreNodeName) {
     ClusterState clusterState = zkController.getClusterState();
-    DocCollection docCollection = clusterState.getCollectionOrNull(collection);
+    DocCollection docCollection = clusterState.getCollectionOrNull(collection, true);
     Slice slices = (docCollection == null) ? null : docCollection.getSlice(shardId);
     if (slices == null) return false;
 
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 4d61837..e41d1e0 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -637,7 +637,7 @@ public class ZkController implements Closeable {
   public void giveupLeadership(CoreDescriptor cd, Throwable tragicException) {
     assert tragicException != null;
     assert cd != null;
-    DocCollection dc = getClusterState().getCollectionOrNull(cd.getCollectionName());
+    DocCollection dc = getClusterState().getCollectionOrNull(cd.getCollectionName(), true);
     if (dc == null) return;
 
     Slice shard = dc.getSlice(cd.getCloudDescriptor().getShardId());
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java
index ff84652..85bd62d 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java
@@ -521,7 +521,7 @@ public class Assign {
       for (String shard : assignRequest.shardNames) shardVsReplicaCount.put(shard, assignRequest.numNrtReplicas);
 
       Map<String, Map<String, Integer>> shardVsNodes = new LinkedHashMap<>();
-      DocCollection docCollection = solrCloudManager.getClusterStateProvider().getClusterState().getCollectionOrNull(assignRequest.collectionName);
+      DocCollection docCollection = solrCloudManager.getClusterStateProvider().getClusterState().getCollectionOrNull(assignRequest.collectionName, true);
       if (docCollection != null) {
         for (Slice slice : docCollection.getSlices()) {
           LinkedHashMap<String, Integer> n = new LinkedHashMap<>();
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/DeleteCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/DeleteCollectionCmd.java
index 120330b..e77ec7a 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/DeleteCollectionCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/DeleteCollectionCmd.java
@@ -101,7 +101,7 @@ public class DeleteCollectionCmd implements OverseerCollectionMessageHandler.Cmd
       SolrZkClient zkClient = zkStateReader.getZkClient();
       SolrSnapshotManager.cleanupCollectionLevelSnapshots(zkClient, collection);
 
-      if (zkStateReader.getClusterState().getCollectionOrNull(collection) == null) {
+      if (zkStateReader.getClusterState().getCollectionOrNull(collection, true) == null) {
         if (zkStateReader.getZkClient().exists(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collection)) {
           // if the collection is not in the clusterstate, but is listed in zk, do nothing, it will just
           // be removed in the finally - we cannot continue, because the below code will error if the collection
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 574df1c..b5c2cf9 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -882,7 +882,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
     List<String> activeReplicaCoreUrls = new ArrayList<>();
     ClusterState clusterState = zkController.getZkStateReader().getClusterState();
     Set<String> liveNodes = clusterState.getLiveNodes();
-    final DocCollection docCollection = clusterState.getCollectionOrNull(collection);
+    final DocCollection docCollection = clusterState.getCollectionOrNull(collection, true);
     if (docCollection != null && docCollection.getActiveSlices() != null && docCollection.getActiveSlices().size() > 0) {
       final Collection<Slice> activeSlices = docCollection.getActiveSlices();
       for (Slice next : activeSlices) {
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java b/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java
index e528e54..262b97f 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java
@@ -91,7 +91,7 @@ public class ClusterStatus {
     if (collection == null) {
       collectionsMap = clusterState.getCollectionsMap();
     } else  {
-      collectionsMap = Collections.singletonMap(collection, clusterState.getCollectionOrNull(collection));
+      collectionsMap = Collections.singletonMap(collection, clusterState.getCollectionOrNull(collection, true));
     }
 
     boolean isAlias = aliasVsCollections.containsKey(collection);
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index 11bc7be..8898dbe 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -288,7 +288,7 @@ public final class ManagedIndexSchema extends IndexSchema {
     ZkStateReader zkStateReader = zkController.getZkStateReader();
     ClusterState clusterState = zkStateReader.getClusterState();
     Set<String> liveNodes = clusterState.getLiveNodes();
-    final DocCollection docCollection = clusterState.getCollectionOrNull(collection);
+    final DocCollection docCollection = clusterState.getCollectionOrNull(collection, true);
     if (docCollection != null && docCollection.getActiveSlicesArr().length > 0) {
       final Slice[] activeSlices = docCollection.getActiveSlicesArr();
       for (Slice next : activeSlices) {
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 81e0617..07679e1 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -1081,7 +1081,7 @@ public class HttpSolrCall {
 
   protected String getRemoteCoreUrl(String collectionName, String origCorename) throws SolrException {
     ClusterState clusterState = cores.getZkController().getClusterState();
-    final DocCollection docCollection = clusterState.getCollectionOrNull(collectionName);
+    final DocCollection docCollection = clusterState.getCollectionOrNull(collectionName, true);
     Slice[] slices = (docCollection != null) ? docCollection.getActiveSlicesArr() : null;
     List<Slice> activeSlices = new ArrayList<>();
     boolean byCoreName = 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 730b7cf..79a137c 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
@@ -117,7 +117,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
     cloneRequiredOnLeader = isCloneRequiredOnLeader(next);
     collection = cloudDesc.getCollectionName();
     clusterState = zkController.getClusterState();
-    DocCollection coll = clusterState.getCollectionOrNull(collection);
+    DocCollection coll = clusterState.getCollectionOrNull(collection, true);
     if (coll != null) {
       // check readOnly property in coll state
       readOnlyCollection = coll.isReadOnly();
@@ -838,7 +838,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
 
 
   private List<SolrCmdDistributor.Node> getCollectionUrls(String collection, EnumSet<Replica.Type> types, boolean onlyLeaders) {
-    final DocCollection docCollection = clusterState.getCollectionOrNull(collection);
+    final DocCollection docCollection = clusterState.getCollectionOrNull(collection, true);
     if (collection == null || docCollection.getSlicesMap() == null) {
       throw new ZooKeeperException(SolrException.ErrorCode.BAD_REQUEST,
           "Could not find collection in zk: " + clusterState);
@@ -994,7 +994,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
         if (id == null) {
           for (Map.Entry<String, RoutingRule> entry : routingRules.entrySet()) {
             String targetCollectionName = entry.getValue().getTargetCollectionName();
-            final DocCollection docCollection = cstate.getCollectionOrNull(targetCollectionName);
+            final DocCollection docCollection = cstate.getCollectionOrNull(targetCollectionName, true);
             if (docCollection != null && docCollection.getActiveSlicesArr().length > 0) {
               final Slice[] activeSlices = docCollection.getActiveSlicesArr();
               Slice any = activeSlices[0];
diff --git a/solr/core/src/java/org/apache/solr/util/SolrLogLayout.java b/solr/core/src/java/org/apache/solr/util/SolrLogLayout.java
index f7c02ce..2909424 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrLogLayout.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrLogLayout.java
@@ -239,7 +239,7 @@ public class SolrLogLayout extends AbstractStringLayout {
 
   private Map<String, Object> getReplicaProps(ZkController zkController, SolrCore core) {
     final String collectionName = core.getCoreDescriptor().getCloudDescriptor().getCollectionName();
-    DocCollection collection = zkController.getClusterState().getCollectionOrNull(collectionName);
+    DocCollection collection = zkController.getClusterState().getCollectionOrNull(collectionName, true);
     Replica replica = collection.getReplica(zkController.getCoreNodeName(core.getCoreDescriptor()));
     if (replica != null) {
       return replica.getProperties();
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/DelegatingClusterStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/DelegatingClusterStateProvider.java
index 827b198..a0cba58 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/DelegatingClusterStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/DelegatingClusterStateProvider.java
@@ -111,7 +111,7 @@ public class DelegatingClusterStateProvider implements ClusterStateProvider {
   @Override
   public DocCollection getCollection(String name) throws IOException {
     ClusterState cs = getClusterState();
-    return cs == null ? null : cs.getCollectionOrNull(name);
+    return cs == null ? null : cs.getCollectionOrNull(name, true);
   }
 
   @Override
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 a7ce278..e85d853 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
@@ -76,7 +76,7 @@ public interface ClusterStateProvider extends SolrCloseable {
   ClusterState getClusterState() throws IOException;
 
   default DocCollection getCollection(String name) throws IOException{
-   return getClusterState().getCollectionOrNull(name);
+   return getClusterState().getCollectionOrNull(name, true);
   }
 
   /**
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
index cc86d62..733793a 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@@ -105,14 +105,14 @@ public class ClusterState implements JSONWriter.Writable {
    * because the semantics of how collection list is loaded have changed in SOLR-6629.
    */
   public boolean hasCollection(String collectionName) {
-    return getCollectionOrNull(collectionName) != null;
+    return getCollectionOrNull(collectionName, true) != null;
   }
 
   /**
    * Get the named DocCollection object, or throw an exception if it doesn't exist.
    */
   public DocCollection getCollection(String collection) {
-    DocCollection coll = getCollectionOrNull(collection);
+    DocCollection coll = getCollectionOrNull(collection, true);
     if (coll == null) throw new SolrException(ErrorCode.BAD_REQUEST, "Could not find collection : " + collection);
     return coll;
   }
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 fb3e744..6812776 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
@@ -975,7 +975,7 @@ public class ZkStateReader implements SolrCloseable {
     if (clusterState == null) {
       return null;
     }
-    final DocCollection docCollection = clusterState.getCollectionOrNull(collection);
+    final DocCollection docCollection = clusterState.getCollectionOrNull(collection, true);
     if (docCollection == null || docCollection.getSlicesMap() == null) {
       throw new ZooKeeperException(ErrorCode.BAD_REQUEST,
           "Could not find collection in zk: " + collection);