You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2017/04/13 04:55:59 UTC
[2/2] lucene-solr:branch_6x: SOLR-10007 Clean up references to
CoreContainer and CoreDescriptors
SOLR-10007 Clean up references to CoreContainer and CoreDescriptors
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/acf30220
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/acf30220
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/acf30220
Branch: refs/heads/branch_6x
Commit: acf302202a15426eee148f58346689ff42dd23e4
Parents: 6b8d9fb
Author: Erick Erickson <er...@apache.org>
Authored: Wed Apr 12 21:55:52 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Wed Apr 12 21:55:52 2017 -0700
----------------------------------------------------------------------
solr/CHANGES.txt | 2 +
.../solr/handler/dataimport/DataImporter.java | 3 +-
.../solr/handler/dataimport/DocBuilder.java | 2 +-
.../handler/dataimport/ZKPropertiesWriter.java | 2 +-
.../solrj/embedded/EmbeddedSolrServer.java | 2 +-
.../java/org/apache/solr/cloud/CloudUtil.java | 2 +-
.../org/apache/solr/cloud/ElectionContext.java | 8 +-
.../org/apache/solr/cloud/RecoveryStrategy.java | 4 +-
.../org/apache/solr/cloud/ZkController.java | 2 +-
.../apache/solr/cloud/rule/ImplicitSnitch.java | 2 +-
.../org/apache/solr/core/CoreContainer.java | 111 +++++++++----------
.../org/apache/solr/core/CoreDescriptor.java | 40 ++++---
.../apache/solr/core/CorePropertiesLocator.java | 10 +-
.../java/org/apache/solr/core/CoresLocator.java | 9 ++
.../apache/solr/core/HdfsDirectoryFactory.java | 2 +-
.../java/org/apache/solr/core/PluginBag.java | 2 +-
.../src/java/org/apache/solr/core/SolrCore.java | 68 ++++++------
.../java/org/apache/solr/core/SolrCores.java | 70 +++++++-----
.../java/org/apache/solr/core/ZkContainer.java | 2 +-
.../solr/handler/CdcrBufferStateManager.java | 8 +-
.../solr/handler/CdcrLeaderStateManager.java | 10 +-
.../solr/handler/CdcrProcessStateManager.java | 8 +-
.../solr/handler/CdcrReplicatorManager.java | 2 +-
.../apache/solr/handler/CdcrRequestHandler.java | 8 +-
.../solr/handler/CdcrUpdateLogSynchronizer.java | 2 +-
.../org/apache/solr/handler/GraphHandler.java | 4 +-
.../org/apache/solr/handler/IndexFetcher.java | 10 +-
.../apache/solr/handler/ReplicationHandler.java | 8 +-
.../org/apache/solr/handler/SQLHandler.java | 4 +-
.../apache/solr/handler/SolrConfigHandler.java | 6 +-
.../org/apache/solr/handler/StreamHandler.java | 4 +-
.../solr/handler/admin/LoggingHandler.java | 2 +-
.../solr/handler/admin/PrepRecoveryOp.java | 2 +-
.../solr/handler/admin/RequestSyncShardOp.java | 4 +-
.../handler/admin/ShowFileRequestHandler.java | 2 +-
.../handler/admin/SolrInfoMBeanHandler.java | 2 +-
.../solr/handler/admin/SystemInfoHandler.java | 2 +-
.../solr/handler/component/DebugComponent.java | 2 +-
.../handler/component/HttpShardHandler.java | 2 +-
.../component/HttpShardHandlerFactory.java | 2 +-
.../component/QueryElevationComponent.java | 4 +-
.../handler/component/RealTimeGetComponent.java | 4 +-
.../solr/handler/component/SearchHandler.java | 4 +-
.../apache/solr/logging/MDCLoggingContext.java | 12 +-
.../solr/metrics/SolrCoreMetricManager.java | 4 +-
.../org/apache/solr/schema/SchemaManager.java | 2 +-
.../apache/solr/schema/ZkIndexSchemaReader.java | 2 +-
.../apache/solr/search/JoinQParserPlugin.java | 4 +-
.../search/join/ScoreJoinQParserPlugin.java | 4 +-
.../solr/update/DefaultSolrCoreState.java | 2 +-
.../solr/update/DirectUpdateHandler2.java | 4 +-
.../java/org/apache/solr/update/PeerSync.java | 8 +-
.../org/apache/solr/update/SolrIndexWriter.java | 2 +-
.../processor/DistributedUpdateProcessor.java | 27 +++--
.../DocExpirationUpdateProcessorFactory.java | 2 +-
.../processor/TolerantUpdateProcessor.java | 2 +-
.../org/apache/solr/util/SolrLogLayout.java | 2 +-
.../org/apache/solr/core/TestCodecSupport.java | 10 +-
.../org/apache/solr/core/TestCoreContainer.java | 30 +++--
.../org/apache/solr/core/TestCoreDiscovery.java | 2 +-
.../org/apache/solr/core/TestLazyCores.java | 17 ++-
.../solr/metrics/SolrCoreMetricManagerTest.java | 2 +-
.../metrics/reporters/SolrJmxReporterTest.java | 2 +-
.../org/apache/solr/update/VersionInfoTest.java | 2 +-
.../org/apache/solr/util/MockCoreContainer.java | 2 +-
.../solrj/MergeIndexesExampleTestBase.java | 2 +-
.../apache/solr/util/ReadOnlyCoresLocator.java | 6 +
.../java/org/apache/solr/util/TestHarness.java | 8 +-
68 files changed, 335 insertions(+), 274 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 9a5b682..2baecad 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -139,6 +139,8 @@ Other Changes
* SOLR-10429: UpdateRequest#getRoutes()should copy the response parser (noble)
+* SOLR-10007: Clean up references to CoreContainer and CoreDescriptors (Erick Erickson)
+
================== 6.5.1 ==================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImporter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImporter.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImporter.java
index 2f5e9b0..a49b4f6 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImporter.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DataImporter.java
@@ -288,8 +288,7 @@ public class DataImporter {
if (propertyWriterTags.isEmpty()) {
boolean zookeeper = false;
if (this.core != null
- && this.core.getCoreDescriptor().getCoreContainer()
- .isZooKeeperAware()) {
+ && this.core.getCoreContainer().isZooKeeperAware()) {
zookeeper = true;
}
pw = new PropertyWriter(zookeeper ? "ZKPropertiesWriter"
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java
index c80d275..91fd7a4 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java
@@ -313,7 +313,7 @@ public class DocBuilder {
}
void handleError(String message, Exception e) {
- if (!dataImporter.getCore().getCoreDescriptor().getCoreContainer().isZooKeeperAware()) {
+ if (!dataImporter.getCore().getCoreContainer().isZooKeeperAware()) {
writer.rollback();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ZKPropertiesWriter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ZKPropertiesWriter.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ZKPropertiesWriter.java
index 2d54872..64a776c 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ZKPropertiesWriter.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ZKPropertiesWriter.java
@@ -44,7 +44,7 @@ public class ZKPropertiesWriter extends SimplePropertiesWriter {
@Override
public void init(DataImporter dataImporter, Map<String, String> params) {
super.init(dataImporter, params);
- zkClient = dataImporter.getCore().getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ zkClient = dataImporter.getCore().getCoreContainer().getZkController().getZkClient();
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
index 8de5fc9..948452e 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
@@ -89,7 +89,7 @@ public class EmbeddedSolrServer extends SolrClient {
* Create an EmbeddedSolrServer wrapping a particular SolrCore
*/
public EmbeddedSolrServer(SolrCore core) {
- this(core.getCoreDescriptor().getCoreContainer(), core.getName());
+ this(core.getCoreContainer(), core.getName());
}
/**
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
----------------------------------------------------------------------
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 c62efa6..ac09621 100644
--- a/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
+++ b/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
@@ -68,7 +68,7 @@ public class CloudUtil {
if (thisCnn != null && thisCnn.equals(cnn)
&& !thisBaseUrl.equals(baseUrl)) {
- if (cc.getCoreNames().contains(desc.getName())) {
+ if (cc.getLoadedCoreNames().contains(desc.getName())) {
cc.unload(desc.getName());
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
----------------------------------------------------------------------
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 c45699b..b2ca7cf 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
@@ -291,7 +291,7 @@ final class ShardLeaderElectionContext extends ShardLeaderElectionContextBase {
if (cc.isShutDown()) {
return;
} else {
- throw new SolrException(ErrorCode.SERVER_ERROR, "SolrCore not found:" + coreName + " in " + cc.getCoreNames());
+ throw new SolrException(ErrorCode.SERVER_ERROR, "SolrCore not found:" + coreName + " in " + cc.getLoadedCoreNames());
}
}
MDCLoggingContext.setCore(core);
@@ -331,7 +331,7 @@ final class ShardLeaderElectionContext extends ShardLeaderElectionContextBase {
if (!zkController.getCoreContainer().isShutDown()) {
cancelElection();
throw new SolrException(ErrorCode.SERVER_ERROR,
- "SolrCore not found:" + coreName + " in " + cc.getCoreNames());
+ "SolrCore not found:" + coreName + " in " + cc.getLoadedCoreNames());
} else {
return;
}
@@ -401,7 +401,7 @@ final class ShardLeaderElectionContext extends ShardLeaderElectionContextBase {
RefCounted<SolrIndexSearcher> searchHolder = core.getNewestSearcher(false);
SolrIndexSearcher searcher = searchHolder.get();
try {
- log.debug(core.getCoreDescriptor().getCoreContainer().getZkController().getNodeName() + " synched "
+ log.debug(core.getCoreContainer().getZkController().getNodeName() + " synched "
+ searcher.search(new MatchAllDocsQuery(), 1).totalHits);
} finally {
searchHolder.decref();
@@ -444,7 +444,7 @@ final class ShardLeaderElectionContext extends ShardLeaderElectionContextBase {
try (SolrCore core = cc.getCore(coreName)) {
if (core == null) {
- log.debug("SolrCore not found:" + coreName + " in " + cc.getCoreNames());
+ log.debug("SolrCore not found:" + coreName + " in " + cc.getLoadedCoreNames());
return;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
----------------------------------------------------------------------
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 1c1a080..0df55b8 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -230,7 +230,7 @@ public class RecoveryStrategy extends Thread implements Closeable {
SolrIndexSearcher searcher = searchHolder.get();
Directory dir = core.getDirectoryFactory().get(core.getIndexDir(), DirContext.META_DATA, null);
try {
- LOG.debug(core.getCoreDescriptor().getCoreContainer()
+ LOG.debug(core.getCoreContainer()
.getZkController().getNodeName()
+ " replicated "
+ searcher.search(new MatchAllDocsQuery(), 1).totalHits
@@ -618,7 +618,7 @@ public class RecoveryStrategy extends Thread implements Closeable {
SolrIndexSearcher searcher = searchHolder.get();
try {
final int totalHits = searcher.search(new MatchAllDocsQuery(), 1).totalHits;
- final String nodeName = core.getCoreDescriptor().getCoreContainer().getZkController().getNodeName();
+ final String nodeName = core.getCoreContainer().getZkController().getNodeName();
LOG.debug("[{}] {} [{} total hits]", nodeName, op, totalHits);
} finally {
searchHolder.decref();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/cloud/ZkController.java
----------------------------------------------------------------------
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 fe32d58..0e04637 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -1143,7 +1143,7 @@ public class ZkController {
MDCLoggingContext.setCore(core);
}
} else {
- MDCLoggingContext.setCoreDescriptor(cd);
+ MDCLoggingContext.setCoreDescriptor(cc, cd);
}
try {
String collection = cd.getCloudDescriptor().getCollectionName();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/cloud/rule/ImplicitSnitch.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/rule/ImplicitSnitch.java b/solr/core/src/java/org/apache/solr/cloud/rule/ImplicitSnitch.java
index 00e27c3..a4e998d 100644
--- a/solr/core/src/java/org/apache/solr/cloud/rule/ImplicitSnitch.java
+++ b/solr/core/src/java/org/apache/solr/cloud/rule/ImplicitSnitch.java
@@ -45,7 +45,7 @@ public class ImplicitSnitch implements CoreAdminHandler.Invocable {
Map<String, Object> result = new HashMap<>();
CoreContainer cc = (CoreContainer) req.getContext().get(CoreContainer.class.getName());
if (req.getParams().getInt(CORES, -1) == 1) {
- result.put(CORES, cc.getCoreNames().size());
+ result.put(CORES, cc.getLoadedCoreNames().size());
}
if (req.getParams().getInt(DISK, -1) == 1) {
try {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index d66e7ad..016844f 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -117,7 +117,7 @@ public class CoreContainer {
public final Exception exception;
public CoreLoadFailure(CoreDescriptor cd, Exception loadFailure) {
- this.cd = cd;
+ this.cd = new CoreDescriptor(cd.getName(), cd);
this.exception = loadFailure;
}
}
@@ -207,8 +207,6 @@ public class CoreContainer {
return this.containerHandlers;
}
- // private ClientConnectionManager clientConnectionManager = new PoolingClientConnectionManager();
-
{
log.debug("New CoreContainer " + System.identityHashCode(this));
}
@@ -541,7 +539,7 @@ public class CoreContainer {
for (final CoreDescriptor cd : cds) {
if (cd.isTransient() || !cd.isLoadOnStartup()) {
- solrCores.putDynamicDescriptor(cd.getName(), cd);
+ getTransientCacheHandler().addTransientDescriptor(cd.getName(), cd);
} else if (asyncSolrCoreLoad) {
solrCores.markCoreAsLoading(cd);
}
@@ -772,50 +770,35 @@ public class CoreContainer {
return coresLocator;
}
- protected SolrCore registerCore(String name, SolrCore core, boolean registerInZk, boolean skipRecovery) {
+ protected SolrCore registerCore(CoreDescriptor cd, SolrCore core, boolean registerInZk, boolean skipRecovery) {
if( core == null ) {
throw new RuntimeException( "Can not register a null core." );
}
-
- // We can register a core when creating them via the admin UI, so we need to ensure that the dynamic descriptors
- // are up to date
- CoreDescriptor cd = core.getCoreDescriptor();
- if ((cd.isTransient() || ! cd.isLoadOnStartup())
- && solrCores.getDynamicDescriptor(name) == null) {
- // Store it away for later use. includes non-transient but not
- // loaded at startup cores.
- solrCores.putDynamicDescriptor(name, cd);
- }
-
- SolrCore old;
-
+
if (isShutDown) {
core.close();
throw new IllegalStateException("This CoreContainer has been closed");
}
- if (cd.isTransient()) {
- old = solrCores.putTransientCore(cfg, name, core, loader);
- } else {
- old = solrCores.putCore(name, core);
- }
+ SolrCore old = solrCores.putCore(cd, core);
/*
* set both the name of the descriptor and the name of the
* core, since the descriptors name is used for persisting.
*/
- core.setName(name);
+ solrCores.addCoreDescriptor(new CoreDescriptor(cd.getName(), cd));
+ core.setName(cd.getName());
- coreInitFailures.remove(name);
+ coreInitFailures.remove(cd.getName());
if( old == null || old == core) {
- log.debug( "registering core: "+name );
+ log.debug( "registering core: " + cd.getName() );
if (registerInZk) {
zkSys.registerInZk(core, false, skipRecovery);
}
return null;
}
else {
- log.debug( "replacing core: "+name );
+ log.debug( "replacing core: " + cd.getName() );
old.close();
if (registerInZk) {
zkSys.registerInZk(core, false, skipRecovery);
@@ -843,10 +826,10 @@ public class CoreContainer {
*/
public SolrCore create(String coreName, Path instancePath, Map<String, String> parameters, boolean newCollection) {
- CoreDescriptor cd = new CoreDescriptor(this, coreName, instancePath, parameters);
+ CoreDescriptor cd = new CoreDescriptor(coreName, instancePath, parameters, getContainerProperties(), isZooKeeperAware());
// TODO: There's a race here, isn't there?
- if (getAllCoreNames().contains(coreName)) {
+ if (getLoadedCoreNames().contains(coreName)) {
log.warn("Creating a core with existing name is not allowed");
// TODO: Shouldn't this be a BAD_REQUEST?
throw new SolrException(ErrorCode.SERVER_ERROR, "Core with name '" + coreName + "' already exists.");
@@ -919,7 +902,7 @@ public class CoreContainer {
SolrCore core = null;
try {
- MDCLoggingContext.setCoreDescriptor(dcore);
+ MDCLoggingContext.setCoreDescriptor(this, dcore);
SolrIdentifierValidator.validateCoreName(dcore.getName());
if (zkSys.getZkController() != null) {
zkSys.getZkController().preRegister(dcore);
@@ -929,7 +912,7 @@ public class CoreContainer {
dcore.setConfigSetTrusted(coreConfig.isTrusted());
log.info("Creating SolrCore '{}' using configuration from {}, trusted={}", dcore.getName(), coreConfig.getName(), dcore.isConfigSetTrusted());
try {
- core = new SolrCore(dcore, coreConfig);
+ core = new SolrCore(this, dcore, coreConfig);
} catch (SolrException e) {
core = processCoreCreateException(e, dcore, coreConfig);
}
@@ -939,7 +922,7 @@ public class CoreContainer {
core.getUpdateHandler().getUpdateLog().recoverFromLog();
}
- registerCore(dcore.getName(), core, publishState, newCollection);
+ registerCore(dcore, core, publishState, newCollection);
return core;
} catch (Exception e) {
@@ -1003,7 +986,7 @@ public class CoreContainer {
if (leader != null && leader.getState() == State.ACTIVE) {
log.info("Found active leader, will attempt to create fresh core and recover.");
resetIndexDirectory(dcore, coreConfig);
- return new SolrCore(dcore, coreConfig);
+ return new SolrCore(this, dcore, coreConfig);
}
} catch (SolrException se) {
se.addSuppressed(original);
@@ -1059,7 +1042,7 @@ public class CoreContainer {
/**
* @return a Collection of the names that loaded cores are mapped to
*/
- public Collection<String> getCoreNames() {
+ public Collection<String> getLoadedCoreNames() {
return solrCores.getLoadedCoreNames();
}
@@ -1115,13 +1098,18 @@ public class CoreContainer {
public void reload(String name) {
SolrCore core = solrCores.getCoreFromAnyList(name, false);
if (core != null) {
- CoreDescriptor cd = core.getCoreDescriptor();
+ // The underlying core properties files may have changed, we don't really know. So we have a (perhaps) stale
+ // CoreDescriptor we need to reload it if it's out there.
+ CorePropertiesLocator cpl = new CorePropertiesLocator(null);
+ CoreDescriptor cd = cpl.reload(this, core.getCoreDescriptor());
+ if (cd == null) cd = core.getCoreDescriptor();
+ solrCores.addCoreDescriptor(cd);
try {
solrCores.waitAddPendingCoreOps(cd.getName());
ConfigSet coreConfig = coreConfigService.getConfig(cd);
log.info("Reloading SolrCore '{}' using configuration from {}", cd.getName(), coreConfig.getName());
SolrCore newCore = core.reload(coreConfig);
- registerCore(cd.getName(), newCore, false, false);
+ registerCore(cd, newCore, false, false);
} catch (SolrCoreState.CoreIsClosedException e) {
throw e;
} catch (Exception e) {
@@ -1193,7 +1181,6 @@ public class CoreContainer {
boolean close = solrCores.isLoadedNotPendingClose(name);
SolrCore core = solrCores.remove(name);
coresLocator.delete(this, cd);
-
if (core == null) {
// transient core
SolrCore.deleteUnloadedCore(cd, deleteDataDir, deleteInstanceDir);
@@ -1208,7 +1195,7 @@ public class CoreContainer {
core.getSolrCoreState().cancelRecovery();
}
- core.unloadOnClose(deleteIndexDir, deleteDataDir, deleteInstanceDir);
+ core.unloadOnClose(cd, deleteIndexDir, deleteDataDir, deleteInstanceDir);
if (close)
core.closeAndWait();
@@ -1222,6 +1209,9 @@ public class CoreContainer {
throw new SolrException(ErrorCode.SERVER_ERROR, "Error unregistering core [" + name + "] from cloud state", e);
}
}
+ if (deleteInstanceDir) { // we aren't going to reload this if we delete the instance dir.
+ solrCores.removeCoreDescriptor(cd);
+ }
}
public void rename(String name, String toName) {
@@ -1231,8 +1221,15 @@ public class CoreContainer {
String oldRegistryName = core.getCoreMetricManager().getRegistryName();
String newRegistryName = SolrCoreMetricManager.createRegistryName(core.getCoreDescriptor().getCollectionName(), toName);
metricManager.swapRegistries(oldRegistryName, newRegistryName);
- registerCore(toName, core, true, false);
+ // The old coreDescriptor is obsolete, so remove it. registerCore will put it back.
+ CoreDescriptor cd = core.getCoreDescriptor();
+ solrCores.removeCoreDescriptor(cd);
+ cd.setProperty("name", toName);
+ solrCores.addCoreDescriptor(cd);
+ core.setName(toName);
+ registerCore(cd, core, true, false);
SolrCore old = solrCores.remove(name);
+
coresLocator.rename(this, old.getCoreDescriptor(), core.getCoreDescriptor());
}
}
@@ -1247,12 +1244,7 @@ public class CoreContainer {
}
public CoreDescriptor getCoreDescriptor(String coreName) {
- // TODO make this less hideous!
- for (CoreDescriptor cd : getCoreDescriptors()) {
- if (cd.getName().equals(coreName))
- return cd;
- }
- return null;
+ return solrCores.getCoreDescriptor(coreName);
}
public Path getCoreRootDirectory() {
@@ -1272,29 +1264,32 @@ public class CoreContainer {
// Do this in two phases since we don't want to lock access to the cores over a load.
SolrCore core = solrCores.getCoreFromAnyList(name, true);
+ // If a core is loaded, we're done just return it.
if (core != null) {
return core;
}
- // OK, it's not presently in any list, is it in the list of dynamic cores but not loaded yet? If so, load it.
- CoreDescriptor desc = solrCores.getDynamicDescriptor(name);
- if (desc == null) { //Nope, no transient core with this name
+ // If it's not yet loaded, we can check if it's had a core init failure and "do the right thing"
+ CoreDescriptor desc = solrCores.getCoreDescriptor(name);
- // if there was an error initializing this core, throw a 500
- // error with the details for clients attempting to access it.
- CoreLoadFailure loadFailure = getCoreInitFailures().get(name);
- if (null != loadFailure) {
- throw new SolrCoreInitializationException(name, loadFailure.exception);
- }
- // otherwise the user is simply asking for something that doesn't exist.
- return null;
+ // if there was an error initializing this core, throw a 500
+ // error with the details for clients attempting to access it.
+ CoreLoadFailure loadFailure = getCoreInitFailures().get(name);
+ if (null != loadFailure) {
+ throw new SolrCoreInitializationException(name, loadFailure.exception);
}
-
+ // This is a bit of awkwardness where SolrCloud and transient cores don't play nice together. For transient cores,
+ // we have to allow them to be created at any time there hasn't been a core load failure (use reload to cure that).
+ // But for TestConfigSetsAPI.testUploadWithScriptUpdateProcessor, this needs to _not_ try to load the core if
+ // the core is null and there was an error. If you change this, be sure to run both TestConfiSetsAPI and
+ // TestLazyCores
+ if (desc == null || zkSys.getZkController() != null) return null;
+
// This will put an entry in pending core ops if the core isn't loaded
core = solrCores.waitAddPendingCoreOps(name);
if (isShutDown) return null; // We're quitting, so stop. This needs to be after the wait above since we may come off
- // the wait as a consequence of shutting down.
+ // the wait as a consequence of shutting down.
try {
if (core == null) {
if (zkSys.getZkController() != null) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java b/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
index 0dc2c71..1747fa2 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
@@ -121,8 +121,6 @@ public class CoreDescriptor {
CloudDescriptor.NUM_SHARDS
);
- private final CoreContainer coreContainer;
-
private final CloudDescriptor cloudDesc;
private final Path instanceDir;
@@ -139,8 +137,9 @@ public class CoreDescriptor {
/** The properties for this core, substitutable by resource loaders */
protected final Properties substitutableProperties = new Properties();
- public CoreDescriptor(CoreContainer container, String name, Path instanceDir, String... properties) {
- this(container, name, instanceDir, toMap(properties));
+ public CoreDescriptor(String name, Path instanceDir, Properties containerProperties,
+ boolean isZooKeeperAware, String... properties) {
+ this(name, instanceDir, toMap(properties), containerProperties, isZooKeeperAware);
}
private static Map<String, String> toMap(String... properties) {
@@ -154,12 +153,14 @@ public class CoreDescriptor {
/**
* Create a new CoreDescriptor with a given name and instancedir
- * @param container the CoreDescriptor's container
* @param name the CoreDescriptor's name
* @param instanceDir the CoreDescriptor's instancedir
+ * @param containerProperties the enclosing container properties for variable resolution
+ * @param isZooKeeperAware whether we are part of SolrCloud or not.
*/
- public CoreDescriptor(CoreContainer container, String name, Path instanceDir) {
- this(container, name, instanceDir, Collections.emptyMap());
+ public CoreDescriptor(String name, Path instanceDir,
+ Properties containerProperties, boolean isZooKeeperAware) {
+ this(name, instanceDir, Collections.emptyMap(), containerProperties, isZooKeeperAware);
}
/**
@@ -168,7 +169,6 @@ public class CoreDescriptor {
* @param other the CoreDescriptor to copy
*/
public CoreDescriptor(String coreName, CoreDescriptor other) {
- this.coreContainer = other.coreContainer;
this.cloudDesc = other.cloudDesc;
this.instanceDir = other.instanceDir;
this.originalExtraProperties.putAll(other.originalExtraProperties);
@@ -183,20 +183,20 @@ public class CoreDescriptor {
/**
* Create a new CoreDescriptor.
- * @param container the CoreDescriptor's container
* @param name the CoreDescriptor's name
* @param instanceDir a Path resolving to the instanceDir
* @param coreProps a Map of the properties for this core
+ * @param containerProperties the properties from the enclosing container.
+ * @param isZooKeeperAware if true, we ar in SolrCloud mode.
*/
- public CoreDescriptor(CoreContainer container, String name, Path instanceDir,
- Map<String, String> coreProps) {
- this.coreContainer = container;
+
+ public CoreDescriptor(String name, Path instanceDir, Map<String, String> coreProps,
+ Properties containerProperties, boolean isZooKeeperAware) {
this.instanceDir = instanceDir;
originalCoreProperties.setProperty(CORE_NAME, name);
- Properties containerProperties = container.getContainerProperties();
name = PropertiesUtil.substituteProperty(checkPropertyIsNotEmpty(name, CORE_NAME),
containerProperties);
@@ -221,7 +221,7 @@ public class CoreDescriptor {
buildSubstitutableProperties();
// TODO maybe make this a CloudCoreDescriptor subclass?
- if (container.isZooKeeperAware()) {
+ if (isZooKeeperAware) {
cloudDesc = new CloudDescriptor(name, coreProperties, this);
}
else {
@@ -324,15 +324,19 @@ public class CoreDescriptor {
public String getName() {
return coreProperties.getProperty(CORE_NAME);
}
+
+ public void setProperty(String prop, String val) {
+ if (substitutableProperties.containsKey(prop)) {
+ substitutableProperties.setProperty(prop, val);
+ return;
+ }
+ coreProperties.setProperty(prop, val);
+ }
public String getCollectionName() {
return cloudDesc == null ? null : cloudDesc.getCollectionName();
}
- public CoreContainer getCoreContainer() {
- return coreContainer;
- }
-
public CloudDescriptor getCloudDescriptor() {
return cloudDesc;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java b/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
index b37402b..385d11b 100644
--- a/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
+++ b/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
@@ -163,6 +163,14 @@ public class CorePropertiesLocator implements CoresLocator {
return cds;
}
+ @Override
+ public CoreDescriptor reload(CoreContainer cc, CoreDescriptor cd) {
+ if (cd == null) return null;
+
+ Path coreProps = cd.getInstanceDir().resolve(CoreDescriptor.DEFAULT_EXTERNAL_PROPERTIES_FILE);
+ return buildCoreDescriptor(coreProps, cc);
+ }
+
protected CoreDescriptor buildCoreDescriptor(Path propertiesFile, CoreContainer cc) {
Path instanceDir = propertiesFile.getParent();
@@ -174,7 +182,7 @@ public class CorePropertiesLocator implements CoresLocator {
for (String key : coreProperties.stringPropertyNames()) {
propMap.put(key, coreProperties.getProperty(key));
}
- return new CoreDescriptor(cc, name, instanceDir, propMap);
+ return new CoreDescriptor(name, instanceDir, propMap, cc.getContainerProperties(), cc.isZooKeeperAware());
}
catch (IOException e) {
logger.error("Couldn't load core descriptor from {}:{}", propertiesFile, e.toString());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/CoresLocator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoresLocator.java b/solr/core/src/java/org/apache/solr/core/CoresLocator.java
index d4f40cd..beaa690 100644
--- a/solr/core/src/java/org/apache/solr/core/CoresLocator.java
+++ b/solr/core/src/java/org/apache/solr/core/CoresLocator.java
@@ -69,4 +69,13 @@ public interface CoresLocator {
*/
public List<CoreDescriptor> discover(CoreContainer cc);
+ /**
+ * reload an existing CoreDescriptor, that is read it from disk.
+ *
+ * @param cc the CoreContainer
+ * @param cd the old CoreDescriptor. If null, this is a no-op
+ * @return the reloaded coreDescriptor or null
+ */
+ public CoreDescriptor reload(CoreContainer cc, CoreDescriptor cd);
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
index db953d3..15f398a 100644
--- a/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/HdfsDirectoryFactory.java
@@ -499,7 +499,7 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory implements Sol
@Override
public void inform(SolrCore core) {
- setHost(core.getCoreDescriptor().getCoreContainer().getHostName());
+ setHost(core.getCoreContainer().getHostName());
}
@VisibleForTesting
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/PluginBag.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 65978f3..2b283cd 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -455,7 +455,7 @@ public class PluginBag<T> implements AutoCloseable {
}
public RuntimeLib(SolrCore core) {
- coreContainer = core.getCoreDescriptor().getCoreContainer();
+ coreContainer = core.getCoreContainer();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index eb3ac06..9040685 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -179,7 +179,6 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
private String name;
private String logid; // used to show what name is set
- private CoreDescriptor coreDescriptor;
private boolean isReloaded = false;
@@ -220,6 +219,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
private Counter newSearcherCounter;
private Counter newSearcherMaxReachedCounter;
private Counter newSearcherOtherErrorsCounter;
+ private final CoreContainer coreContainer;
public Date getStartTimeStamp() { return startTime; }
@@ -423,10 +423,8 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
}
public void setName(String v) {
- String oldName = this.name;
this.name = v;
this.logid = (v==null)?"":("["+v+"] ");
- this.coreDescriptor = new CoreDescriptor(v, this.coreDescriptor);
if (coreMetricManager != null) {
coreMetricManager.afterCoreSetName();
}
@@ -635,9 +633,9 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
boolean success = false;
SolrCore core = null;
try {
- CoreDescriptor cd = new CoreDescriptor(coreDescriptor.getName(), coreDescriptor);
+ CoreDescriptor cd = new CoreDescriptor(name, getCoreDescriptor());
cd.loadExtraProperties(); //Reload the extra properties
- core = new SolrCore(getName(), getDataDir(), coreConfig.getSolrConfig(),
+ core = new SolrCore(coreContainer, getName(), getDataDir(), coreConfig.getSolrConfig(),
coreConfig.getIndexSchema(), coreConfig.getProperties(),
cd, updateHandler, solrDelPolicy, currentCore, true);
@@ -657,7 +655,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
}
private DirectoryFactory initDirectoryFactory() {
- return DirectoryFactory.loadDirectoryFactory(solrConfig, getCoreDescriptor().getCoreContainer(), coreMetricManager.getRegistryName());
+ return DirectoryFactory.loadDirectoryFactory(solrConfig, coreContainer, coreMetricManager.getRegistryName());
}
private RecoveryStrategy.Builder initRecoveryStrategyBuilder() {
@@ -827,12 +825,16 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
return createReloadedUpdateHandler(className, "Update Handler", updateHandler);
}
- public SolrCore(CoreDescriptor cd, ConfigSet coreConfig) {
- this(cd.getName(), null, coreConfig.getSolrConfig(), coreConfig.getIndexSchema(), coreConfig.getProperties(),
+ public SolrCore(CoreContainer coreContainer, CoreDescriptor cd, ConfigSet coreConfig) {
+ this(coreContainer, cd.getName(), null, coreConfig.getSolrConfig(), coreConfig.getIndexSchema(), coreConfig.getProperties(),
cd, null, null, null, false);
}
-
+ public CoreContainer getCoreContainer() {
+ return coreContainer;
+ }
+
+
/**
* Creates a new core and register it in the list of cores. If a core with the
* same name already exists, it will be stopped and replaced by this one.
@@ -846,14 +848,18 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
*
* @since solr 1.3
*/
- public SolrCore(String name, String dataDir, SolrConfig config,
- IndexSchema schema, NamedList configSetProperties,
- CoreDescriptor coreDescriptor, UpdateHandler updateHandler,
- IndexDeletionPolicyWrapper delPolicy, SolrCore prev, boolean reload) {
+ public SolrCore(CoreContainer coreContainer, String name, String dataDir, SolrConfig config,
+ IndexSchema schema, NamedList configSetProperties,
+ CoreDescriptor coreDescriptor, UpdateHandler updateHandler,
+ IndexDeletionPolicyWrapper delPolicy, SolrCore prev, boolean reload) {
+
+ this.coreContainer = coreContainer;
assert ObjectReleaseTracker.track(searcherExecutor); // ensure that in unclean shutdown tests we still close this
-
- this.coreDescriptor = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
+
+ CoreDescriptor cd = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
+ coreContainer.solrCores.addCoreDescriptor(cd);
+
setName(name);
MDCLoggingContext.setCore(this);
@@ -881,7 +887,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
checkVersionFieldExistsInSchema(schema, coreDescriptor);
- SolrMetricManager metricManager = this.coreDescriptor.getCoreContainer().getMetricManager();
+ SolrMetricManager metricManager = coreContainer.getMetricManager();
// initialize searcher-related metrics
initializeMetrics(metricManager, coreMetricManager.getRegistryName(), null);
@@ -1021,15 +1027,15 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
/** Set UpdateLog to buffer updates if the slice is in construction. */
private void bufferUpdatesIfConstructing(CoreDescriptor coreDescriptor) {
- final CoreContainer cc = coreDescriptor.getCoreContainer();
- if (cc != null && cc.isZooKeeperAware()) {
+
+ if (coreContainer != null && coreContainer.isZooKeeperAware()) {
if (reqHandlers.get("/get") == null) {
log.warn("WARNING: RealTimeGetHandler is not registered at /get. " +
"SolrCloud will always use full index replication instead of the more efficient PeerSync method.");
}
// ZK pre-register would have already happened so we read slice properties now
- final ClusterState clusterState = cc.getZkController().getClusterState();
+ final ClusterState clusterState = coreContainer.getZkController().getClusterState();
final DocCollection collection = clusterState.getCollection(coreDescriptor.getCloudDescriptor().getCollectionName());
final Slice slice = collection.getSlice(coreDescriptor.getCloudDescriptor().getShardId());
if (slice.getState() == Slice.State.CONSTRUCTION) {
@@ -1121,7 +1127,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
manager.registerGauge(registry, () -> getIndexDir(), true, "indexDir", Category.CORE.toString());
manager.registerGauge(registry, () -> getIndexSize(), true, "sizeInBytes", Category.INDEX.toString());
manager.registerGauge(registry, () -> NumberUtils.readableSize(getIndexSize()), true, "size", Category.INDEX.toString());
- manager.registerGauge(registry, () -> coreDescriptor.getCoreContainer().getCoreNames(this), true, "aliases", Category.CORE.toString());
+ manager.registerGauge(registry, () -> coreContainer.getCoreNames(this), true, "aliases", Category.CORE.toString());
// initialize disk total / free metrics
Path dataDirPath = Paths.get(dataDir);
File dataDirFile = dataDirPath.toFile();
@@ -2722,7 +2728,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
if (initArgs == null)
initArgs = new NamedList<>();
- String collection = coreDescriptor.getCollectionName();
+ String collection = getCoreDescriptor().getCollectionName();
StorageIO storageIO =
ManagedResourceStorage.newStorageIO(collection, resourceLoader, initArgs);
mgr.init(resourceLoader, initArgs, storageIO);
@@ -2731,7 +2737,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
}
public CoreDescriptor getCoreDescriptor() {
- return coreDescriptor;
+ return coreContainer.getCoreDescriptor(name);
}
public IndexDeletionPolicyWrapper getDeletionPolicy(){
@@ -2793,8 +2799,8 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
CoreDescriptor cd = getCoreDescriptor();
if (cd != null) {
- if (null != cd && cd.getCoreContainer() != null) {
- lst.add("aliases", getCoreDescriptor().getCoreContainer().getCoreNames(this));
+ if (coreContainer != null) {
+ lst.add("aliases", coreContainer.getCoreNames(this));
}
CloudDescriptor cloudDesc = cd.getCloudDescriptor();
if (cloudDesc != null) {
@@ -2818,7 +2824,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
return codec;
}
- public void unloadOnClose(boolean deleteIndexDir, boolean deleteDataDir, boolean deleteInstanceDir) {
+ public void unloadOnClose(final CoreDescriptor desc, boolean deleteIndexDir, boolean deleteDataDir, boolean deleteInstanceDir) {
if (deleteIndexDir) {
try {
directoryFactory.remove(getIndexDir());
@@ -2841,13 +2847,12 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
@Override
public void postClose(SolrCore core) {
- CoreDescriptor cd = core.getCoreDescriptor();
- if (cd != null) {
+ if (desc != null) {
try {
- FileUtils.deleteDirectory(cd.getInstanceDir().toFile());
+ FileUtils.deleteDirectory(desc.getInstanceDir().toFile());
} catch (IOException e) {
SolrException.log(log, "Failed to delete instance dir for core:"
- + core.getName() + " dir:" + cd.getInstanceDir());
+ + core.getName() + " dir:" + desc.getInstanceDir());
}
}
}
@@ -2906,7 +2911,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
public static Runnable getConfListener(SolrCore core, ZkSolrResourceLoader zkSolrResourceLoader) {
final String coreName = core.getName();
- final CoreContainer cc = core.getCoreDescriptor().getCoreContainer();
+ final CoreContainer cc = core.getCoreContainer();
final String overlayPath = zkSolrResourceLoader.getConfigSetZkPath() + "/" + ConfigOverlay.RESOURCE_NAME;
final String solrConfigPath = zkSolrResourceLoader.getConfigSetZkPath() + "/" + core.getSolrConfig().getName();
String schemaRes = null;
@@ -3040,7 +3045,6 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
if (!BlobRepository.BLOB_KEY_PATTERN_CHECKER.matcher(key).matches()) {
throw new IllegalArgumentException("invalid key format, must end in /N where N is the version number");
}
- CoreContainer coreContainer = getCoreDescriptor().getCoreContainer();
// define the blob
BlobRepository.BlobContentRef blobRef = coreContainer.getBlobRepository().getBlobIncRef(key, decoder);
addCloseHook(new CloseHook() {
@@ -3050,7 +3054,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
@Override
public void postClose(SolrCore core) {
- core.getCoreDescriptor().getCoreContainer().getBlobRepository().decrementBlobRefCount(blobRef);
+ coreContainer.getBlobRepository().decrementBlobRefCount(blobRef);
}
});
return blobRef;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/SolrCores.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index 40d5115..ef6fca5 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -47,7 +47,8 @@ class SolrCores implements Observer {
private static Object modifyLock = new Object(); // for locking around manipulating any of the core maps.
private final Map<String, SolrCore> cores = new LinkedHashMap<>(); // For "permanent" cores
- private final Map<String, CoreDescriptor> lazyDescriptors = new LinkedHashMap<>();
+ // These descriptors, once loaded, will _not_ be unloaded, i.e. they are not "transient".
+ private final Map<String, CoreDescriptor> residentDesciptors = new LinkedHashMap<>();
private final CoreContainer container;
@@ -67,17 +68,26 @@ class SolrCores implements Observer {
this.container = container;
}
- protected void putDynamicDescriptor(String rawName, CoreDescriptor cd) {
+ protected void addCoreDescriptor(CoreDescriptor p) {
synchronized (modifyLock) {
- if (cd.isTransient()) {
+ if (p.isTransient()) {
+ if (container.getTransientCacheHandler() != null) {
+ container.getTransientCacheHandler().addTransientDescriptor(p.getName(), p);
+ }
+ } else {
+ residentDesciptors.put(p.getName(), p);
+ }
+ }
+ }
+
+ protected void removeCoreDescriptor(CoreDescriptor p) {
+ synchronized (modifyLock) {
+ if (p.isTransient()) {
if (container.getTransientCacheHandler() != null) {
- container.getTransientCacheHandler().addTransientDescriptor(rawName, cd);
- } else {
- log.error("Tried to add transient core to transient handler, but no transient core handler has been found. "
- + " Descriptor: " + cd.toString());
+ container.getTransientCacheHandler().removeTransientDescriptor(p.getName());
}
} else {
- lazyDescriptors.put(rawName, cd);
+ residentDesciptors.remove(p.getName());
}
}
}
@@ -149,10 +159,18 @@ class SolrCores implements Observer {
return retCore;
}
- protected SolrCore putCore(String name, SolrCore core) {
+ // Returns the old core if there was a core of the same name.
+ protected SolrCore putCore(CoreDescriptor cd, SolrCore core) {
synchronized (modifyLock) {
- return cores.put(name, core);
+ if (cd.isTransient()) {
+ if (container.getTransientCacheHandler() != null) {
+ return container.getTransientCacheHandler().addCore(cd.getName(), core);
+ }
+ } else {
+ return cores.put(cd.getName(), core);
+ }
}
+ return null;
}
/**
@@ -231,7 +249,7 @@ class SolrCores implements Observer {
if (container.getTransientCacheHandler() != null) {
set.addAll(container.getTransientCacheHandler().getAllCoreNames());
}
- set.addAll(lazyDescriptors.keySet());
+ set.addAll(residentDesciptors.keySet());
}
return set;
}
@@ -260,13 +278,19 @@ class SolrCores implements Observer {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "No such core: " + n1);
}
}
+ // When we swap the cores, we also need to swap the associated core descriptors. Note, this changes the
+ // name of the coreDescriptor by virtue of the c-tor
+ CoreDescriptor cd1 = c1.getCoreDescriptor();
+ addCoreDescriptor(new CoreDescriptor(n1, c0.getCoreDescriptor()));
+ addCoreDescriptor(new CoreDescriptor(n0, cd1));
cores.put(n0, c1);
cores.put(n1, c0);
+ c0.setName(n1);
+ c1.setName(n0);
+
container.getMetricManager().swapRegistries(
c0.getCoreMetricManager().getRegistryName(),
c1.getCoreMetricManager().getRegistryName());
- c0.setName(n1);
- c1.setName(n0);
}
}
@@ -277,12 +301,10 @@ class SolrCores implements Observer {
SolrCore ret = cores.remove(name);
// It could have been a newly-created core. It could have been a transient core. The newly-created cores
// in particular should be checked. It could have been a dynamic core.
- TransientSolrCoreCache transientHandler = container.getTransientCacheHandler();
+ TransientSolrCoreCache transientHandler = container.getTransientCacheHandler();
if (ret == null && transientHandler != null) {
ret = transientHandler.removeCore(name);
- transientHandler.removeTransientDescriptor(name);
}
- lazyDescriptors.remove(name);
return ret;
}
}
@@ -304,14 +326,6 @@ class SolrCores implements Observer {
}
}
- protected CoreDescriptor getDynamicDescriptor(String name) {
- synchronized (modifyLock) {
- CoreDescriptor cd = lazyDescriptors.get(name);
- if (cd != null || container.getTransientCacheHandler() == null) return cd;
- return container.getTransientCacheHandler().getTransientDescriptor(name);
- }
- }
-
// See SOLR-5366 for why the UNLOAD command needs to know whether a core is actually loaded or not, it might have
// to close the core. However, there's a race condition. If the core happens to be in the pending "to close" queue,
// we should NOT close it in unload core.
@@ -350,7 +364,7 @@ class SolrCores implements Observer {
protected CoreDescriptor getUnloadedCoreDescriptor(String cname) {
synchronized (modifyLock) {
- CoreDescriptor desc = lazyDescriptors.get(cname);
+ CoreDescriptor desc = residentDesciptors.get(cname);
if (desc == null) {
if (container.getTransientCacheHandler() == null) return null;
desc = container.getTransientCacheHandler().getTransientDescriptor(cname);
@@ -439,10 +453,8 @@ class SolrCores implements Observer {
*/
public CoreDescriptor getCoreDescriptor(String coreName) {
synchronized (modifyLock) {
- if (cores.containsKey(coreName))
- return cores.get(coreName).getCoreDescriptor();
- if (lazyDescriptors.containsKey(coreName) || container.getTransientCacheHandler() == null)
- return lazyDescriptors.get(coreName);
+ if (residentDesciptors.containsKey(coreName))
+ return residentDesciptors.get(coreName);
return container.getTransientCacheHandler().getTransientDescriptor(coreName);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/core/ZkContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/ZkContainer.java b/solr/core/src/java/org/apache/solr/core/ZkContainer.java
index 6665c4e..16ba4d8 100644
--- a/solr/core/src/java/org/apache/solr/core/ZkContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/ZkContainer.java
@@ -115,7 +115,7 @@ public class ZkContainer {
@Override
public List<CoreDescriptor> getCurrentDescriptors() {
List<CoreDescriptor> descriptors = new ArrayList<>(
- cc.getCoreNames().size());
+ cc.getLoadedCoreNames().size());
Collection<SolrCore> cores = cc.getCores();
for (SolrCore core : cores) {
descriptors.add(core.getCoreDescriptor());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/CdcrBufferStateManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrBufferStateManager.java b/solr/core/src/java/org/apache/solr/handler/CdcrBufferStateManager.java
index 713d6fc..fd8d4bb 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrBufferStateManager.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrBufferStateManager.java
@@ -62,7 +62,7 @@ class CdcrBufferStateManager extends CdcrStateManager {
// Startup and register the watcher at startup
try {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
watcher = this.initWatcher(zkClient);
this.setState(CdcrParams.BufferState.get(zkClient.getData(this.getZnodePath(), watcher, null, true)));
} catch (KeeperException | InterruptedException e) {
@@ -103,7 +103,7 @@ class CdcrBufferStateManager extends CdcrStateManager {
* action.
*/
void synchronize() {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
try {
zkClient.setData(this.getZnodePath(), this.getState().getBytes(), true);
// check if nobody changed it in the meantime, and set a new watcher
@@ -114,7 +114,7 @@ class CdcrBufferStateManager extends CdcrStateManager {
}
private void createStateNode() {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
try {
if (!zkClient.exists(this.getZnodePath(), true)) {
if (!zkClient.exists(this.getZnodeBase(), true)) {
@@ -158,7 +158,7 @@ class CdcrBufferStateManager extends CdcrStateManager {
if (Event.EventType.None.equals(event.getType())) {
return;
}
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
try {
CdcrParams.BufferState state = CdcrParams.BufferState.get(zkClient.getData(CdcrBufferStateManager.this.getZnodePath(), watcher, null, true));
log.info("Received new CDCR buffer state from watcher: {} @ {}:{}", state, collectionName, shard);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java b/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java
index 7d8ddc4..1b4d8af 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java
@@ -53,8 +53,8 @@ class CdcrLeaderStateManager extends CdcrStateManager {
// Fetch leader state and register the watcher at startup
try {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
- ClusterState clusterState = core.getCoreDescriptor().getCoreContainer().getZkController().getClusterState();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
+ ClusterState clusterState = core.getCoreContainer().getZkController().getClusterState();
watcher = this.initWatcher(zkClient);
// if the node does not exist, it means that the leader was not yet registered. This can happen
@@ -89,7 +89,7 @@ class CdcrLeaderStateManager extends CdcrStateManager {
}
private void checkIfIAmLeader() throws KeeperException, InterruptedException {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
ZkNodeProps props = ZkNodeProps.load(zkClient.getData(CdcrLeaderStateManager.this.getZnodePath(), null, null, true));
if (props != null) {
CdcrLeaderStateManager.this.setAmILeader(props.get("core").equals(core.getName()));
@@ -144,8 +144,8 @@ class CdcrLeaderStateManager extends CdcrStateManager {
try {
log.info("Received new leader state @ {}:{}", collectionName, shard);
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
- ClusterState clusterState = core.getCoreDescriptor().getCoreContainer().getZkController().getClusterState();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
+ ClusterState clusterState = core.getCoreContainer().getZkController().getClusterState();
if (CdcrLeaderStateManager.this.isLeaderRegistered(zkClient, clusterState)) {
CdcrLeaderStateManager.this.checkIfIAmLeader();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/CdcrProcessStateManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrProcessStateManager.java b/solr/core/src/java/org/apache/solr/handler/CdcrProcessStateManager.java
index b1c8dda..05be077 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrProcessStateManager.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrProcessStateManager.java
@@ -62,7 +62,7 @@ class CdcrProcessStateManager extends CdcrStateManager {
// Register the watcher at startup
try {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
watcher = this.initWatcher(zkClient);
this.setState(CdcrParams.ProcessState.get(zkClient.getData(this.getZnodePath(), watcher, null, true)));
} catch (KeeperException | InterruptedException e) {
@@ -103,7 +103,7 @@ class CdcrProcessStateManager extends CdcrStateManager {
* action.
*/
void synchronize() {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
try {
zkClient.setData(this.getZnodePath(), this.getState().getBytes(), true);
// check if nobody changed it in the meantime, and set a new watcher
@@ -114,7 +114,7 @@ class CdcrProcessStateManager extends CdcrStateManager {
}
private void createStateNode() {
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
try {
if (!zkClient.exists(this.getZnodePath(), true)) {
if (!zkClient.exists(this.getZnodeBase(), true)) { // Should be a no-op if the node exists
@@ -158,7 +158,7 @@ class CdcrProcessStateManager extends CdcrStateManager {
if (Event.EventType.None.equals(event.getType())) {
return;
}
- SolrZkClient zkClient = core.getCoreDescriptor().getCoreContainer().getZkController().getZkClient();
+ SolrZkClient zkClient = core.getCoreContainer().getZkController().getZkClient();
try {
CdcrParams.ProcessState state = CdcrParams.ProcessState.get(zkClient.getData(CdcrProcessStateManager.this.getZnodePath(), watcher, null, true));
log.info("Received new CDCR process state from watcher: {} @ {}:{}", state, collectionName, shard);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
index 528e0b7..6f0d704 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
@@ -236,7 +236,7 @@ class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
this.ulog = (CdcrUpdateLog) core.getUpdateHandler().getUpdateLog();
this.state = state;
this.targetCollection = state.getTargetCollection();
- String baseUrl = core.getCoreDescriptor().getCoreContainer().getZkController().getBaseUrl();
+ String baseUrl = core.getCoreContainer().getZkController().getBaseUrl();
this.myCoreUrl = ZkCoreNodeProps.getCoreUrl(baseUrl, core.getName());
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
index ba174f9..44c8646 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
@@ -244,7 +244,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
collection = core.getCoreDescriptor().getCloudDescriptor().getCollectionName();
// Make sure that the core is ZKAware
- if (!core.getCoreDescriptor().getCoreContainer().isZooKeeperAware()) {
+ if (!core.getCoreContainer().isZooKeeperAware()) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Solr instance is not running in SolrCloud mode.");
}
@@ -390,7 +390,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
*/
private void handleCollectionCheckpointAction(SolrQueryRequest req, SolrQueryResponse rsp)
throws IOException, SolrServerException {
- ZkController zkController = core.getCoreDescriptor().getCoreContainer().getZkController();
+ ZkController zkController = core.getCoreContainer().getZkController();
try {
zkController.getZkStateReader().forceUpdateCollection(collection);
} catch (Exception e) {
@@ -638,7 +638,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
running.set(true);
String masterUrl = req.getParams().get(ReplicationHandler.MASTER_URL);
bootstrapCallable = new BootstrapCallable(masterUrl, core);
- bootstrapFuture = core.getCoreDescriptor().getCoreContainer().getUpdateShardHandler().getRecoveryExecutor().submit(bootstrapCallable);
+ bootstrapFuture = core.getCoreContainer().getUpdateShardHandler().getRecoveryExecutor().submit(bootstrapCallable);
try {
bootstrapFuture.get();
} catch (InterruptedException e) {
@@ -659,7 +659,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
};
try {
- core.getCoreDescriptor().getCoreContainer().getUpdateShardHandler().getUpdateExecutor().submit(runnable);
+ core.getCoreContainer().getUpdateShardHandler().getUpdateExecutor().submit(runnable);
rsp.add(RESPONSE_STATUS, "submitted");
} catch (RejectedExecutionException ree) {
// no problem, we're probably shutting down
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java b/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
index 48bfec0..7ce060c 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
@@ -112,7 +112,7 @@ class CdcrUpdateLogSynchronizer implements CdcrStateManager.CdcrStateObserver {
private class UpdateLogSynchronisation implements Runnable {
private String getLeaderUrl() {
- ZkController zkController = core.getCoreDescriptor().getCoreContainer().getZkController();
+ ZkController zkController = core.getCoreContainer().getZkController();
ClusterState cstate = zkController.getClusterState();
DocCollection docCollection = cstate.getCollection(collection);
ZkNodeProps leaderProps = docCollection.getLeader(shardId);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/GraphHandler.java b/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
index 6d41d83..c843e0a 100644
--- a/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
@@ -84,12 +84,12 @@ public class GraphHandler extends RequestHandlerBase implements SolrCoreAware, P
String defaultCollection;
String defaultZkhost;
- CoreContainer coreContainer = core.getCoreDescriptor().getCoreContainer();
+ CoreContainer coreContainer = core.getCoreContainer();
this.coreName = core.getName();
if(coreContainer.isZooKeeperAware()) {
defaultCollection = core.getCoreDescriptor().getCollectionName();
- defaultZkhost = core.getCoreDescriptor().getCoreContainer().getZkController().getZkServerAddress();
+ defaultZkhost = core.getCoreContainer().getZkController().getZkServerAddress();
streamFactory.withCollectionZkHost(defaultCollection, defaultZkhost);
streamFactory.withDefaultZkHost(defaultZkhost);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index 6c3da83..89bd1e0 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -206,7 +206,7 @@ public class IndexFetcher {
httpClientParams.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, httpBasicAuthPassword);
httpClientParams.set(HttpClientUtil.PROP_ALLOW_COMPRESSION, useCompression);
- return HttpClientUtil.createClient(httpClientParams, core.getCoreDescriptor().getCoreContainer().getUpdateShardHandler().getConnectionManager());
+ return HttpClientUtil.createClient(httpClientParams, core.getCoreContainer().getUpdateShardHandler().getConnectionManager());
}
public IndexFetcher(final NamedList initArgs, final ReplicationHandler handler, final SolrCore sc) {
@@ -448,7 +448,7 @@ public class IndexFetcher {
// because of soft commits (which open a searcher on IW's data)
// so we need to close the existing searcher on the last commit
// and wait until we are able to clean up all unused lucene files
- if (solrCore.getCoreDescriptor().getCoreContainer().isZooKeeperAware()) {
+ if (solrCore.getCoreContainer().isZooKeeperAware()) {
solrCore.closeSearcher();
}
@@ -616,7 +616,7 @@ public class IndexFetcher {
}
}
- if (core.getCoreDescriptor().getCoreContainer().isZooKeeperAware()) {
+ if (core.getCoreContainer().isZooKeeperAware()) {
// we only track replication success in SolrCloud mode
core.getUpdateHandler().getSolrCoreState().setLastReplicateIndexSuccess(successfulInstall);
}
@@ -804,7 +804,7 @@ public class IndexFetcher {
IndexCommit commitPoint;
// must get the latest solrCore object because the one we have might be closed because of a reload
// todo stop keeping solrCore around
- SolrCore core = solrCore.getCoreDescriptor().getCoreContainer().getCore(solrCore.getName());
+ SolrCore core = solrCore.getCoreContainer().getCore(solrCore.getName());
try {
Future[] waitSearcher = new Future[1];
searcher = core.getSearcher(true, true, waitSearcher, true);
@@ -832,7 +832,7 @@ public class IndexFetcher {
final CountDownLatch latch = new CountDownLatch(1);
new Thread(() -> {
try {
- solrCore.getCoreDescriptor().getCoreContainer().reload(solrCore.getName());
+ solrCore.getCoreContainer().reload(solrCore.getName());
} catch (Exception e) {
LOG.error("Could not reload core ", e);
} finally {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
index ddf6b6a..34b32a2 100644
--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
@@ -422,7 +422,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
String location = params.get(CoreAdminParams.BACKUP_LOCATION);
String repoName = params.get(CoreAdminParams.BACKUP_REPOSITORY);
- CoreContainer cc = core.getCoreDescriptor().getCoreContainer();
+ CoreContainer cc = core.getCoreContainer();
BackupRepository repo = null;
if (repoName != null) {
repo = cc.newBackupRepository(Optional.of(repoName));
@@ -540,7 +540,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
String location = params.get(CoreAdminParams.BACKUP_LOCATION);
String repoName = params.get(CoreAdminParams.BACKUP_REPOSITORY);
- CoreContainer cc = core.getCoreDescriptor().getCoreContainer();
+ CoreContainer cc = core.getCoreContainer();
BackupRepository repo = null;
if (repoName != null) {
repo = cc.newBackupRepository(Optional.of(repoName));
@@ -678,7 +678,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
}
}
- if (confFileNameAlias.size() < 1 || core.getCoreDescriptor().getCoreContainer().isZooKeeperAware())
+ if (confFileNameAlias.size() < 1 || core.getCoreContainer().isZooKeeperAware())
return;
LOG.debug("Adding config files to list: " + includeConfFiles);
//if configuration files need to be included get their details
@@ -1173,7 +1173,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
boolean enableMaster = isEnabled( master );
if (enableMaster || enableSlave) {
- if (core.getCoreDescriptor().getCoreContainer().getZkController() != null) {
+ if (core.getCoreContainer().getZkController() != null) {
LOG.warn("SolrCloud is enabled for core " + core.getName() + " but so is old-style replication. Make sure you" +
" intend this behavior, it usually indicates a mis-configuration. Master setting is " +
Boolean.toString(enableMaster) + " and slave setting is " + Boolean.toString(enableSlave));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SQLHandler.java b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
index f307baa..c80d0d7 100644
--- a/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
@@ -60,10 +60,10 @@ public class SQLHandler extends RequestHandlerBase implements SolrCoreAware, Per
private boolean isCloud = false;
public void inform(SolrCore core) {
- CoreContainer coreContainer = core.getCoreDescriptor().getCoreContainer();
+ CoreContainer coreContainer = core.getCoreContainer();
if(coreContainer.isZooKeeperAware()) {
- defaultZkhost = core.getCoreDescriptor().getCoreContainer().getZkController().getZkServerAddress();
+ defaultZkhost = core.getCoreContainer().getZkController().getZkServerAddress();
defaultWorkerCollection = core.getCoreDescriptor().getCollectionName();
isCloud = true;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
----------------------------------------------------------------------
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 2660cba..2409e4b 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -436,7 +436,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
log.debug("persisted to version : {} ", latestVersion);
waitForAllReplicasState(req.getCore().getCoreDescriptor().getCloudDescriptor().getCollectionName(),
- req.getCore().getCoreDescriptor().getCoreContainer().getZkController(), RequestParams.NAME, latestVersion, 30);
+ req.getCore().getCoreContainer().getZkController(), RequestParams.NAME, latestVersion, 30);
}
} else {
@@ -495,12 +495,12 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
ConfigOverlay.RESOURCE_NAME, overlay.toByteArray(), true);
log.info("Executed config commands successfully and persisted to ZK {}", ops);
waitForAllReplicasState(req.getCore().getCoreDescriptor().getCloudDescriptor().getCollectionName(),
- req.getCore().getCoreDescriptor().getCoreContainer().getZkController(),
+ req.getCore().getCoreContainer().getZkController(),
ConfigOverlay.NAME,
latestVersion, 30);
} else {
SolrResourceLoader.persistConfLocally(loader, ConfigOverlay.RESOURCE_NAME, overlay.toByteArray());
- req.getCore().getCoreDescriptor().getCoreContainer().reload(req.getCore().getName());
+ req.getCore().getCoreContainer().reload(req.getCore().getName());
log.info("Executed config commands successfully and persited to File System {}", ops);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
index 8a18b89..c7aae20 100644
--- a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
@@ -133,12 +133,12 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
String defaultCollection;
String defaultZkhost;
- CoreContainer coreContainer = core.getCoreDescriptor().getCoreContainer();
+ CoreContainer coreContainer = core.getCoreContainer();
this.coreName = core.getName();
if(coreContainer.isZooKeeperAware()) {
defaultCollection = core.getCoreDescriptor().getCollectionName();
- defaultZkhost = core.getCoreDescriptor().getCoreContainer().getZkController().getZkServerAddress();
+ defaultZkhost = core.getCoreContainer().getZkController().getZkServerAddress();
streamFactory.withCollectionZkHost(defaultCollection, defaultZkhost);
streamFactory.withDefaultZkHost(defaultZkhost);
modelCache = new ModelCache(250,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
index b10aed1..122d2cb 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
@@ -60,7 +60,7 @@ public class LoggingHandler extends RequestHandlerBase implements SolrCoreAware
@Override
public void inform(SolrCore core) {
if (watcher == null) {
- watcher = core.getCoreDescriptor().getCoreContainer().getLogging();
+ watcher = core.getCoreContainer().getLogging();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/admin/PrepRecoveryOp.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/PrepRecoveryOp.java b/solr/core/src/java/org/apache/solr/handler/admin/PrepRecoveryOp.java
index d370bef..0c2c903 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/PrepRecoveryOp.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/PrepRecoveryOp.java
@@ -196,7 +196,7 @@ class PrepRecoveryOp implements CoreAdminHandler.CoreAdminOp {
.getNewestSearcher(false);
SolrIndexSearcher searcher = searchHolder.get();
try {
- log.debug(core.getCoreDescriptor().getCoreContainer()
+ log.debug(core.getCoreContainer()
.getZkController().getNodeName()
+ " to replicate "
+ searcher.search(new MatchAllDocsQuery(), 1).totalHits
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/admin/RequestSyncShardOp.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/RequestSyncShardOp.java b/solr/core/src/java/org/apache/solr/handler/admin/RequestSyncShardOp.java
index 584a7ca..dd4ae38 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/RequestSyncShardOp.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/RequestSyncShardOp.java
@@ -58,7 +58,7 @@ class RequestSyncShardOp implements CoreAdminHandler.CoreAdminOp {
try (SolrCore core = it.handler.coreContainer.getCore(cname)) {
if (core != null) {
- syncStrategy = new SyncStrategy(core.getCoreDescriptor().getCoreContainer());
+ syncStrategy = new SyncStrategy(core.getCoreContainer());
Map<String, Object> props = new HashMap<>();
props.put(ZkStateReader.BASE_URL_PROP, zkController.getBaseUrl());
@@ -73,7 +73,7 @@ class RequestSyncShardOp implements CoreAdminHandler.CoreAdminOp {
.getNewestSearcher(false);
SolrIndexSearcher searcher = searchHolder.get();
try {
- log.debug(core.getCoreDescriptor().getCoreContainer()
+ log.debug(core.getCoreContainer()
.getZkController().getNodeName()
+ " synched "
+ searcher.search(new MatchAllDocsQuery(), 1).totalHits);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
----------------------------------------------------------------------
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 805a690..02577f1 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
@@ -127,7 +127,7 @@ public class ShowFileRequestHandler extends RequestHandlerBase
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp)
throws InterruptedException, KeeperException, IOException {
- CoreContainer coreContainer = req.getCore().getCoreDescriptor().getCoreContainer();
+ CoreContainer coreContainer = req.getCore().getCoreContainer();
if (coreContainer.isZooKeeperAware()) {
showFromZooKeeper(req, rsp, coreContainer);
} else {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
----------------------------------------------------------------------
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 297cdbf..c02cfe2 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
@@ -167,7 +167,7 @@ public class SolrInfoMBeanHandler extends RequestHandlerBase {
}
}
- for (SolrInfoMBean infoMBean : req.getCore().getCoreDescriptor().getCoreContainer().getResourceLoader().getInfoMBeans()) {
+ for (SolrInfoMBean infoMBean : req.getCore().getCoreContainer().getResourceLoader().getInfoMBeans()) {
String cat = infoMBean.getCategory().name();
addMBean(req,cat, cats,requestedKeys,infoMBean.getName(),infoMBean);
// add it also under back-compat name
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
----------------------------------------------------------------------
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 fc1679f..8b74491 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
@@ -154,7 +154,7 @@ public class SystemInfoHandler extends RequestHandlerBase
private CoreContainer getCoreContainer(SolrQueryRequest req, SolrCore core) {
CoreContainer coreContainer;
if (core != null) {
- coreContainer = req.getCore().getCoreDescriptor().getCoreContainer();
+ coreContainer = req.getCore().getCoreContainer();
} else {
coreContainer = cc;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java b/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
index be21733..6466d34 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
@@ -161,7 +161,7 @@ public class DebugComponent extends SearchComponent
@SuppressForbidden(reason = "Need currentTimeMillis, only used for naming")
private String generateRid(ResponseBuilder rb) {
- String hostName = rb.req.getCore().getCoreDescriptor().getCoreContainer().getHostName();
+ String hostName = rb.req.getCore().getCoreContainer().getHostName();
return hostName + "-" + rb.req.getCore().getName() + "-" + System.currentTimeMillis() + "-" + ridCounter.getAndIncrement();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acf30220/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
----------------------------------------------------------------------
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 40e17a9..8c0a9cb 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
@@ -279,7 +279,7 @@ public class HttpShardHandler extends ShardHandler {
Map<String,Slice> slices = null;
CoreDescriptor coreDescriptor = req.getCore().getCoreDescriptor();
CloudDescriptor cloudDescriptor = coreDescriptor.getCloudDescriptor();
- ZkController zkController = coreDescriptor.getCoreContainer().getZkController();
+ ZkController zkController = req.getCore().getCoreContainer().getZkController();
final ReplicaListTransformer replicaListTransformer = httpShardHandlerFactory.getReplicaListTransformer(req);