You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/09 21:01:58 UTC
[lucene-solr] 16/23: fix init race.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 64ff0b6d15fc5ef14316dea7d6e6149d793d8562
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Jul 8 13:46:14 2020 -0500
fix init race.
---
.../java/org/apache/solr/core/CoreContainer.java | 43 +++++++++++-----------
1 file changed, 21 insertions(+), 22 deletions(-)
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 1754a58..f7ac939 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -225,7 +225,7 @@ public class CoreContainer implements Closeable {
protected volatile SolrMetricsContext solrMetricsContext;
- protected MetricsHandler metricsHandler;
+ protected volatile MetricsHandler metricsHandler;
protected volatile MetricsHistoryHandler metricsHistoryHandler;
@@ -333,6 +333,26 @@ public class CoreContainer implements Closeable {
this.containerProperties = new Properties(config.getSolrProperties());
this.asyncSolrCoreLoad = asyncSolrCoreLoad;
this.replayUpdatesExecutor = new OrderedExecutor(10, ParWork.getExecutorService(10, 10, 3));
+ metricManager = new SolrMetricManager(loader, cfg.getMetricsConfig());
+ String registryName = SolrMetricManager.getRegistryName(SolrInfoBean.Group.node);
+ solrMetricsContext = new SolrMetricsContext(metricManager, registryName, metricTag);
+ try (ParWork work = new ParWork(this)) {
+
+ work.collect(() -> {
+ shardHandlerFactory = ShardHandlerFactory.newInstance(cfg.getShardHandlerFactoryPluginInfo(), loader);
+ if (shardHandlerFactory instanceof SolrMetricProducer) {
+ SolrMetricProducer metricProducer = (SolrMetricProducer) shardHandlerFactory;
+ metricProducer.initializeMetrics(solrMetricsContext, "httpShardHandler");
+ }
+ });
+
+ work.collect(() -> {
+ updateShardHandler = new UpdateShardHandler(cfg.getUpdateShardHandlerConfig());
+ updateShardHandler.initializeMetrics(solrMetricsContext, "updateShardHandler");
+ });
+
+ work.addCollect("shard-handlers");
+ }
}
@SuppressWarnings({"unchecked"})
@@ -633,30 +653,9 @@ public class CoreContainer implements Closeable {
containerHandlers.getApiBag().registerObject(packageStoreAPI.readAPI);
containerHandlers.getApiBag().registerObject(packageStoreAPI.writeAPI);
- metricManager = new SolrMetricManager(loader, cfg.getMetricsConfig());
- String registryName = SolrMetricManager.getRegistryName(SolrInfoBean.Group.node);
- solrMetricsContext = new SolrMetricsContext(metricManager, registryName, metricTag);
-
-
-
try (ParWork work = new ParWork(this)) {
work.collect(() -> {
- shardHandlerFactory = ShardHandlerFactory.newInstance(cfg.getShardHandlerFactoryPluginInfo(), loader);
- if (shardHandlerFactory instanceof SolrMetricProducer) {
- SolrMetricProducer metricProducer = (SolrMetricProducer) shardHandlerFactory;
- metricProducer.initializeMetrics(solrMetricsContext, "httpShardHandler");
- }
- });
-
- work.collect(() -> {
- updateShardHandler = new UpdateShardHandler(cfg.getUpdateShardHandlerConfig());
- updateShardHandler.initializeMetrics(solrMetricsContext, "updateShardHandler");
- });
-
- work.addCollect("shard-handlers");
-
- work.collect(() -> {
zkSys.initZooKeeper(this, cfg.getCloudConfig());
});