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);