This is an automated email from the ASF dual-hosted git repository. noble pushed a commit to branch branch_9x in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_9x by this push: new 49bf4b0 SOLR-15963: Refactor code to minimize access to SolrCore (#599) 49bf4b0 is described below commit 49bf4b00fa26506953bce347804ec1b31c881277 Author: Noble Paul <noblep...@users.noreply.github.com> AuthorDate: Thu Feb 10 16:46:00 2022 +1100 SOLR-15963: Refactor code to minimize access to SolrCore (#599) --- .../cloud/api/collections/CategoryRoutedAlias.java | 4 ++-- .../solr/cloud/api/collections/TimeRoutedAlias.java | 2 +- .../org/apache/solr/handler/RequestHandlerBase.java | 2 +- .../org/apache/solr/handler/SolrConfigHandler.java | 6 +++--- .../solr/handler/admin/ShowFileRequestHandler.java | 4 ++-- .../solr/handler/admin/SolrInfoMBeanHandler.java | 2 +- .../solr/handler/admin/SystemInfoHandler.java | 21 ++++++++------------- .../solr/handler/component/HttpShardHandler.java | 4 ++-- .../handler/component/HttpShardHandlerFactory.java | 2 +- .../solr/handler/component/QueryComponent.java | 6 +++--- .../handler/component/RealTimeGetComponent.java | 4 ++-- .../solr/handler/component/SearchHandler.java | 4 ++-- .../handler/component/TaskManagementHandler.java | 2 +- .../java/org/apache/solr/request/SimpleFacets.java | 2 +- .../org/apache/solr/request/SolrQueryRequest.java | 11 +++++++++++ .../org/apache/solr/search/JoinQParserPlugin.java | 2 +- .../solr/search/join/ScoreJoinQParserPlugin.java | 4 ++-- .../org/apache/solr/servlet/SolrRequestParsers.java | 9 +++++++++ .../org/apache/solr/update/AddUpdateCommand.java | 2 +- .../src/java/org/apache/solr/update/UpdateLog.java | 2 +- .../processor/DistributedUpdateProcessor.java | 2 +- .../DistributedUpdateProcessorFactory.java | 2 +- .../processor/DistributedZkUpdateProcessor.java | 4 ++-- .../processor/RoutedAliasUpdateProcessor.java | 2 +- .../update/processor/TolerantUpdateProcessor.java | 2 +- .../solr/handler/component/AnalyticsComponent.java | 2 +- .../LTRFeatureLoggerTransformerFactory.java | 2 +- .../apache/solr/ltr/search/LTRQParserPlugin.java | 2 +- 28 files changed, 64 insertions(+), 49 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java index 3e55863..8600eb8 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java @@ -121,7 +121,7 @@ public class CategoryRoutedAlias extends RoutedAlias { @Override public void validateRouteValue(AddUpdateCommand cmd) throws SolrException { if (this.aliases == null) { - updateParsedCollectionAliases(cmd.getReq().getCore().getCoreContainer().getZkController().zkStateReader, false); + updateParsedCollectionAliases(cmd.getReq().getCoreContainer().getZkController().zkStateReader, false); } Object fieldValue = cmd.getSolrInputDocument().getFieldValue(getRouteField()); @@ -225,7 +225,7 @@ public class CategoryRoutedAlias extends RoutedAlias { public CandidateCollection findCandidateGivenValue(AddUpdateCommand cmd) { Object value = cmd.getSolrInputDocument().getFieldValue(getRouteField()); String targetColName = buildCollectionNameFromValue(String.valueOf(value)); - ZkStateReader zkStateReader = cmd.getReq().getCore().getCoreContainer().getZkController().zkStateReader; + ZkStateReader zkStateReader = cmd.getReq().getCoreContainer().getZkController().zkStateReader; updateParsedCollectionAliases(zkStateReader, true); List<String> collectionList = getCollectionList(this.aliases); if (collectionList.contains(targetColName)) { diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java index 3e6b31e..63f3ce4 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java @@ -449,7 +449,7 @@ public class TimeRoutedAlias extends RoutedAlias { @Override public CandidateCollection findCandidateGivenValue(AddUpdateCommand cmd) { Object value = cmd.getSolrInputDocument().getFieldValue(getRouteField()); - ZkStateReader zkStateReader = cmd.getReq().getCore().getCoreContainer().getZkController().zkStateReader; + ZkStateReader zkStateReader = cmd.getReq().getCoreContainer().getZkController().zkStateReader; String printableId = cmd.getPrintableId(); updateParsedCollectionAliases(zkStateReader, true); diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java index 8156c19..eec7ef1 100644 --- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java +++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java @@ -223,7 +223,7 @@ public abstract class RequestHandlerBase implements } } catch (Exception e) { if (req.getCore() != null) { - boolean isTragic = req.getCore().getCoreContainer().checkTragicException(req.getCore()); + boolean isTragic = req.getCoreContainer().checkTragicException(req.getCore()); if (isTragic) { if (e instanceof SolrException) { // Tragic exceptions should always throw a server error 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 02b56e1..50f220b 100644 --- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java @@ -472,7 +472,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa log.debug("persisted to version : {} ", latestVersion); waitForAllReplicasState(req.getCore().getCoreDescriptor().getCloudDescriptor().getCollectionName(), - req.getCore().getCoreContainer().getZkController(), RequestParams.NAME, latestVersion, 30); + req.getCoreContainer().getZkController(), RequestParams.NAME, latestVersion, 30); } } else { @@ -532,12 +532,12 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa ConfigOverlay.RESOURCE_NAME, overlay.toByteArray(), true); log.debug("Executed config commands successfully and persisted to ZK {}", ops); waitForAllReplicasState(req.getCore().getCoreDescriptor().getCloudDescriptor().getCollectionName(), - req.getCore().getCoreContainer().getZkController(), + req.getCoreContainer().getZkController(), ConfigOverlay.NAME, latestVersion, 30); } else { SolrResourceLoader.persistConfLocally(loader, ConfigOverlay.RESOURCE_NAME, overlay.toByteArray()); - req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId); + req.getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId); log.info("Executed config commands successfully and persisted to File System {}", ops); } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java index e944fb5..1332337 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java @@ -139,7 +139,7 @@ public class ShowFileRequestHandler extends RequestHandlerBase implements Permis public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws InterruptedException, KeeperException, IOException { - CoreContainer coreContainer = req.getCore().getCoreContainer(); + CoreContainer coreContainer = req.getCoreContainer(); if (coreContainer.isZooKeeperAware()) { showFromZooKeeper(req, rsp, coreContainer); } else { @@ -379,7 +379,7 @@ public class ShowFileRequestHandler extends RequestHandlerBase implements Permis } // A leading slash is unnecessary but supported and interpreted as start of config dir Path filePath = configDir.resolve(fname.startsWith("/") ? fname.substring(1) : fname); - req.getCore().getCoreContainer().assertPathAllowed(filePath); + req.getCoreContainer().assertPathAllowed(filePath); return filePath; } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java index 80502c6..0b06616 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java @@ -132,7 +132,7 @@ public class SolrInfoMBeanHandler extends RequestHandlerBase { addMBean(req, cats, requestedKeys, entry.getKey(),entry.getValue()); } - for (SolrInfoBean infoMBean : req.getCore().getCoreContainer().getResourceLoader().getInfoMBeans()) { + for (SolrInfoBean infoMBean : req.getCoreContainer().getResourceLoader().getInfoMBeans()) { addMBean(req,cats,requestedKeys,infoMBean.getName(),infoMBean); } return cats; diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java index 282b412..28bfe52 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java @@ -135,14 +135,14 @@ public class SystemInfoHandler extends RequestHandlerBase { rsp.setHttpCaching(false); SolrCore core = req.getCore(); - if (AdminHandlersProxy.maybeProxyToNodes(req, rsp, getCoreContainer(req, core))) { + if (AdminHandlersProxy.maybeProxyToNodes(req, rsp, getCoreContainer(req))) { return; // Request was proxied to other node } if (core != null) rsp.add( "core", getCoreInfo( core, req.getSchema() ) ); - boolean solrCloudMode = getCoreContainer(req, core).isZooKeeperAware(); + boolean solrCloudMode = getCoreContainer(req).isZooKeeperAware(); rsp.add( "mode", solrCloudMode ? "solrcloud" : "std"); if (solrCloudMode) { - rsp.add("zkHost", getCoreContainer(req, core).getZkController().getZkServerAddress()); + rsp.add("zkHost", getCoreContainer(req).getZkController().getZkServerAddress()); } if (cc != null) { rsp.add("solr_home", cc.getSolrHome()); @@ -154,10 +154,10 @@ public class SystemInfoHandler extends RequestHandlerBase rsp.add( "security", getSecurityInfo(req) ); rsp.add( "system", getSystemInfo() ); if (solrCloudMode) { - rsp.add("node", getCoreContainer(req, core).getZkController().getNodeName()); + rsp.add("node", getCoreContainer(req).getZkController().getNodeName()); } SolrEnvironment env = SolrEnvironment.getFromSyspropOrClusterprop(solrCloudMode ? - getCoreContainer(req, core).getZkController().zkStateReader : null); + getCoreContainer(req).getZkController().zkStateReader : null); if (env.isDefined()) { rsp.add("environment", env.getCode()); if (env.getLabel() != null) { @@ -169,14 +169,9 @@ public class SystemInfoHandler extends RequestHandlerBase } } - private CoreContainer getCoreContainer(SolrQueryRequest req, SolrCore core) { - CoreContainer coreContainer; - if (core != null) { - coreContainer = req.getCore().getCoreContainer(); - } else { - coreContainer = cc; - } - return coreContainer; + private CoreContainer getCoreContainer(SolrQueryRequest req) { + CoreContainer coreContainer = req.getCoreContainer(); + return coreContainer == null ? cc : coreContainer; } /** diff --git a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java index 8a32581..99d1297 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java @@ -263,11 +263,11 @@ public class HttpShardHandler extends ShardHandler { CoreDescriptor coreDescriptor = req.getCore().getCoreDescriptor(); CloudDescriptor cloudDescriptor = coreDescriptor.getCloudDescriptor(); - ZkController zkController = req.getCore().getCoreContainer().getZkController(); + ZkController zkController = req.getCoreContainer().getZkController(); final ReplicaListTransformer replicaListTransformer = httpShardHandlerFactory.getReplicaListTransformer(req); - AllowListUrlChecker urlChecker = req.getCore().getCoreContainer().getAllowListUrlChecker(); + AllowListUrlChecker urlChecker = req.getCoreContainer().getAllowListUrlChecker(); if (shards != null && zkController == null && urlChecker.isEnabled() && !urlChecker.hasExplicitAllowList()) { throw new SolrException(SolrException.ErrorCode.FORBIDDEN, "solr.xml property '" + AllowListUrlChecker.URL_ALLOW_LIST diff --git a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java index d15d01e..41cb776 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java +++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java @@ -342,7 +342,7 @@ public class HttpShardHandlerFactory extends ShardHandlerFactory implements org. final SolrParams params = req.getParams(); final SolrCore core = req.getCore(); // explicit check for null core (temporary?, for tests) @SuppressWarnings("resource") - ZkController zkController = core == null ? null : core.getCoreContainer().getZkController(); + ZkController zkController = req.getCoreContainer().getZkController(); if (zkController != null) { return requestReplicaListTransformerGenerator.getReplicaListTransformer( params, diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java index 241b966..b7a40b7 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java +++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java @@ -288,7 +288,7 @@ public class QueryComponent extends SearchComponent groupingSpec.setResponseFormat(responseFormat); // See SOLR-12249. Disallow grouping on text fields that are not SortableText in cloud mode - if (req.getCore().getCoreContainer().isZooKeeperAware()) { + if (req.getCoreContainer().isZooKeeperAware()) { IndexSchema schema = rb.req.getSchema(); String[] fields = params.getParams(GroupParams.GROUP_FIELD); if (fields != null) { @@ -1569,8 +1569,8 @@ public class QueryComponent extends SearchComponent } private static String generateQueryID(SolrQueryRequest req) { - ZkController zkController = req.getCore().getCoreContainer().getZkController(); - String nodeName = req.getCore().getCoreContainer().getHostName(); + ZkController zkController = req.getCoreContainer().getZkController(); + String nodeName = req.getCoreContainer().getHostName(); if (zkController != null) { nodeName = zkController.getNodeName(); diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java index 25bbbae..01fee72 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java +++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java @@ -172,7 +172,7 @@ public class RealTimeGetComponent extends SearchComponent try { if (log.isDebugEnabled()) { log.debug("{} min count to sync to (from most recent searcher view) {}" - , req.getCore().getCoreContainer().getZkController().getNodeName() + , req.getCoreContainer().getZkController().getNodeName() , searcher.count(new MatchAllDocsQuery())); } } finally { @@ -976,7 +976,7 @@ public class RealTimeGetComponent extends SearchComponent // TODO: handle collection=...? - ZkController zkController = rb.req.getCore().getCoreContainer().getZkController(); + ZkController zkController = rb.req.getCoreContainer().getZkController(); // if shards=... then use that if (zkController != null && params.get(ShardParams.SHARDS) == null) { diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java index 3ee8575..f45588a 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java @@ -237,7 +237,7 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware, public ShardHandler getAndPrepShardHandler(SolrQueryRequest req, ResponseBuilder rb) { ShardHandler shardHandler = null; - CoreContainer cc = req.getCore().getCoreContainer(); + CoreContainer cc = req.getCoreContainer(); boolean isZkAware = cc.isZooKeeperAware(); rb.isDistrib = req.getParams().getBool(DISTRIB, isZkAware); if (!rb.isDistrib) { @@ -586,7 +586,7 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware, } private static String generateRid(SolrQueryRequest req) { - String hostName = req.getCore().getCoreContainer().getHostName(); + String hostName = req.getCoreContainer().getHostName(); return hostName + "-" + ridCounter.getAndIncrement(); } diff --git a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java index f679007..7e3d08b 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java @@ -132,7 +132,7 @@ public abstract class TaskManagementHandler extends RequestHandlerBase implement public static ResponseBuilder buildResponseBuilder(SolrQueryRequest req, SolrQueryResponse rsp, List<SearchComponent> components) { - CoreContainer cc = req.getCore().getCoreContainer(); + CoreContainer cc = req.getCoreContainer(); boolean isZkAware = cc.isZooKeeperAware(); ResponseBuilder rb = new ResponseBuilder(req, rsp, components); diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java index 099000a..af0cac5 100644 --- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java +++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java @@ -167,7 +167,7 @@ public class SimpleFacets { this.docsOrig = docs; this.global = params; this.rb = rb; - this.facetExecutor = req.getCore().getCoreContainer().getUpdateShardHandler().getUpdateExecutor(); + this.facetExecutor = req.getCoreContainer().getUpdateShardHandler().getUpdateExecutor(); } public void setFacetDebugInfo(FacetDebugInfo fdebugParent) { diff --git a/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java b/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java index f472040..ec25bb8 100644 --- a/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java +++ b/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import org.apache.solr.cloud.CloudDescriptor; import io.opentracing.Span; import io.opentracing.Tracer; import io.opentracing.noop.NoopSpan; @@ -28,6 +29,7 @@ import io.opentracing.util.GlobalTracer; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.CommandOperation; import org.apache.solr.common.util.ContentStream; +import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; import org.apache.solr.schema.IndexSchema; import org.apache.solr.search.SolrIndexSearcher; @@ -153,6 +155,15 @@ public interface SolrQueryRequest extends AutoCloseable { default Span getSpan() { return NoopSpan.INSTANCE; } + + default CoreContainer getCoreContainer() { + SolrCore core = getCore(); + return core == null ? null : core.getCoreContainer(); + } + + default CloudDescriptor getCloudDescriptor() { + return getCore().getCoreDescriptor().getCloudDescriptor(); + } } diff --git a/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java index 7361b98..45ff096 100644 --- a/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java @@ -137,7 +137,7 @@ public class JoinQParserPlugin extends QParserPlugin { long fromCoreOpenTime = 0; if (fromIndex != null && !fromIndex.equals(qparser.req.getCore().getCoreDescriptor().getName()) ) { - CoreContainer container = qparser.req.getCore().getCoreContainer(); + CoreContainer container = qparser.req.getCoreContainer(); // if in SolrCloud mode, fromIndex should be the name of a single-sharded collection coreName = ScoreJoinQParserPlugin.getCoreName(fromIndex, container); diff --git a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java index c87e318..ed1603d 100644 --- a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java @@ -90,7 +90,7 @@ public class ScoreJoinQParserPlugin extends QParserPlugin { public Weight createWeight(IndexSearcher searcher, org.apache.lucene.search.ScoreMode scoreMode, float boost) throws IOException { SolrRequestInfo info = SolrRequestInfo.getRequestInfo(); - CoreContainer container = info.getReq().getCore().getCoreContainer(); + CoreContainer container = info.getReq().getCoreContainer(); final SolrCore fromCore = container.getCore(fromIndex); @@ -228,7 +228,7 @@ public class ScoreJoinQParserPlugin extends QParserPlugin { final String myCore = req.getCore().getCoreDescriptor().getName(); if (fromIndex != null && (!fromIndex.equals(myCore) || byPassShortCircutCheck)) { - CoreContainer container = req.getCore().getCoreContainer(); + CoreContainer container = req.getCoreContainer(); final String coreName = getCoreName(fromIndex, container); final SolrCore fromCore = container.getCore(coreName); diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java index 8685191..f19afed 100644 --- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java +++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java @@ -55,6 +55,7 @@ import org.apache.solr.common.util.CommandOperation; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.common.util.FastInputStream; +import org.apache.solr.core.CoreContainer; import org.apache.solr.core.RequestHandlers; import org.apache.solr.core.SolrConfig; import org.apache.solr.core.SolrCore; @@ -247,6 +248,14 @@ public class SolrRequestParsers { } @Override + public CoreContainer getCoreContainer() { + return httpSolrCall != null ? + httpSolrCall.cores : + super.getCoreContainer(); + } + + + @Override public List<CommandOperation> getCommands(boolean validateInput) { if (httpSolrCall != null) { return httpSolrCall.getCommands(validateInput); diff --git a/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java b/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java index 2de9e6b..d2def0e 100644 --- a/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java +++ b/solr/core/src/java/org/apache/solr/update/AddUpdateCommand.java @@ -90,7 +90,7 @@ public class AddUpdateCommand extends UpdateCommand { // use route but there's one last exclusion: It's incompatible with SolrCloud implicit router. String collectionName = req.getCore().getCoreDescriptor().getCollectionName(); if (collectionName != null) { - DocRouter router = req.getCore().getCoreContainer().getZkController().getClusterState() + DocRouter router = req.getCoreContainer().getZkController().getClusterState() .getCollection(collectionName).getRouter(); if (router instanceof ImplicitDocRouter) { route = null; diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java index 87be666..8d0d8e0 100644 --- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java +++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java @@ -1840,7 +1840,7 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer { UpdateRequestProcessorChain processorChain = req.getCore().getUpdateProcessingChain(null); UpdateRequestProcessor proc = processorChain.createProcessor(req, rsp); - OrderedExecutor executor = inSortedOrder ? null : req.getCore().getCoreContainer().getReplayUpdatesExecutor(); + OrderedExecutor executor = inSortedOrder ? null : req.getCoreContainer().getReplayUpdatesExecutor(); AtomicInteger pendingTasks = new AtomicInteger(0); AtomicReference<SolrException> exceptionOnExecuteUpdate = new AtomicReference<>(); diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java index 4802134..e3db4d9 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java @@ -631,7 +631,7 @@ public class DistributedUpdateProcessor extends UpdateRequestProcessor { */ private UpdateCommand fetchFullUpdateFromLeader(AddUpdateCommand inplaceAdd, long versionOnUpdate) throws IOException { String id = inplaceAdd.getIndexedIdStr(); - UpdateShardHandler updateShardHandler = inplaceAdd.getReq().getCore().getCoreContainer().getUpdateShardHandler(); + UpdateShardHandler updateShardHandler = inplaceAdd.getReq().getCoreContainer().getUpdateShardHandler(); ModifiableSolrParams params = new ModifiableSolrParams(); params.set(DISTRIB, false); params.set("getInputDocument", id); diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessorFactory.java index 93c1bf2..deaa1d9 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessorFactory.java +++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessorFactory.java @@ -50,7 +50,7 @@ public class DistributedUpdateProcessorFactory public UpdateRequestProcessor getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next) { - final boolean isZkAware = req.getCore().getCoreContainer().isZooKeeperAware(); + final boolean isZkAware = req.getCoreContainer().isZooKeeperAware(); DistributedUpdateProcessor distribUpdateProcessor = isZkAware ? 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 c58bca8..c022a43 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 @@ -111,7 +111,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor { public DistributedZkUpdateProcessor(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next) { super(req, rsp, next); - CoreContainer cc = req.getCore().getCoreContainer(); + CoreContainer cc = req.getCoreContainer(); cloudDesc = req.getCore().getCoreDescriptor().getCloudDescriptor(); zkController = cc.getZkController(); distributedClusterStateUpdater = zkController.getDistributedClusterStateUpdater(); @@ -1246,7 +1246,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor { // Streaming updates can delay shutdown and cause big update reorderings (new streams can't be // initiated, but existing streams carry on). This is why we check if the CC is shutdown. // See SOLR-8203 and loop HdfsChaosMonkeyNothingIsSafeTest (and check for inconsistent shards) to test. - if (req.getCore().getCoreContainer().isShutDown()) { + if (req.getCoreContainer().isShutDown()) { throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, "CoreContainer is shutting down."); } diff --git a/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java index d95f946..e359a2f 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java @@ -127,7 +127,7 @@ public class RoutedAliasUpdateProcessor extends UpdateRequestProcessor { } private static Map<String, String> getAliasProps(SolrQueryRequest req, String aliasName) { - ZkController zkController = req.getCore().getCoreContainer().getZkController(); + ZkController zkController = req.getCoreContainer().getZkController(); final Map<String, String> aliasProperties = zkController.getZkStateReader().getAliases().getCollectionAliasProperties(aliasName); if (aliasProperties.isEmpty()) { throw RoutedAlias.newAliasMustExistException(aliasName); // if it did exist, we'd have a non-null map diff --git a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java index d0cc6d7..eb99317 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java @@ -134,7 +134,7 @@ public class TolerantUpdateProcessor extends UpdateRequestProcessor { this.distribPhase = distribPhase; assert ! DistribPhase.FROMLEADER.equals(distribPhase); - this.zkController = this.req.getCore().getCoreContainer().getZkController(); + this.zkController = this.req.getCoreContainer().getZkController(); this.uniqueKeyField = this.req.getCore().getLatestSchema().getUniqueKeyField(); assert null != uniqueKeyField : "Factory didn't enforce uniqueKey field?"; } diff --git a/solr/modules/analytics/src/java/org/apache/solr/handler/component/AnalyticsComponent.java b/solr/modules/analytics/src/java/org/apache/solr/handler/component/AnalyticsComponent.java index a743586..90ac4c5 100644 --- a/solr/modules/analytics/src/java/org/apache/solr/handler/component/AnalyticsComponent.java +++ b/solr/modules/analytics/src/java/org/apache/solr/handler/component/AnalyticsComponent.java @@ -109,7 +109,7 @@ public class AnalyticsComponent extends SearchComponent { // Send out a request to each shard and merge the responses into our AnalyticsRequestManager reqManager.shardStream.sendRequests(rb.req.getCore().getCoreDescriptor().getCollectionName(), - rb.req.getCore().getCoreContainer().getZkController().getZkServerAddress()); + rb.req.getCoreContainer().getZkController().getZkServerAddress()); reqManager.sendShards = false; diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java index 310efb6..04f4980 100644 --- a/solr/modules/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java +++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.java @@ -216,7 +216,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory { } leafContexts = searcher.getTopReaderContext().leaves(); if (threadManager != null) { - threadManager.setExecutor(context.getRequest().getCore().getCoreContainer().getUpdateShardHandler().getUpdateExecutor()); + threadManager.setExecutor(context.getRequest().getCoreContainer().getUpdateShardHandler().getUpdateExecutor()); } rerankingQueriesFromContext = SolrQueryRequestContextUtils.getScoringQueries(req); diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/search/LTRQParserPlugin.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/search/LTRQParserPlugin.java index f29e7f3..592f94c 100644 --- a/solr/modules/ltr/src/java/org/apache/solr/ltr/search/LTRQParserPlugin.java +++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/search/LTRQParserPlugin.java @@ -152,7 +152,7 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa @Override public Query parse() throws SyntaxError { if (threadManager != null) { - threadManager.setExecutor(req.getCore().getCoreContainer().getUpdateShardHandler().getUpdateExecutor()); + threadManager.setExecutor(req.getCoreContainer().getUpdateShardHandler().getUpdateExecutor()); } // ReRanking Model final String[] modelNames = localParams.getParams(LTRQParserPlugin.MODEL);