You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2020/10/26 11:50:10 UTC

[lucene-solr] 02/02: SOLR-14749: Fix some merge snafus.

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

ab pushed a commit to branch jira/solr-14749-api
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 4e89ad26e6412b3943b683f25d07bc7fa56ad4e5
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Mon Oct 26 12:49:19 2020 +0100

    SOLR-14749: Fix some merge snafus.
---
 .../org/apache/solr/cluster/events/impl/package-info.java   |  7 ++++++-
 .../src/java/org/apache/solr/core/ClusterSingletons.java    |  6 +++---
 solr/core/src/java/org/apache/solr/core/CoreContainer.java  | 13 +++++++++++++
 3 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cluster/events/impl/package-info.java b/solr/core/src/java/org/apache/solr/cluster/events/impl/package-info.java
index 4eb6bf6..fc00246 100644
--- a/solr/core/src/java/org/apache/solr/cluster/events/impl/package-info.java
+++ b/solr/core/src/java/org/apache/solr/cluster/events/impl/package-info.java
@@ -15,4 +15,9 @@
  * limitations under the License.
  */
 
-description = 'Lucene HTML documentation'
+/**
+ * Default implementation of {@link org.apache.solr.cluster.events.ClusterEventProducer}.
+ */
+package org.apache.solr.cluster.events.impl;
+
+
diff --git a/solr/core/src/java/org/apache/solr/core/ClusterSingletons.java b/solr/core/src/java/org/apache/solr/core/ClusterSingletons.java
index 84acb4f..0487540 100644
--- a/solr/core/src/java/org/apache/solr/core/ClusterSingletons.java
+++ b/solr/core/src/java/org/apache/solr/core/ClusterSingletons.java
@@ -151,9 +151,6 @@ public class ClusterSingletons {
    */
   public void startClusterSingletons() {
     final Runnable initializer = () -> {
-      if (!runSingletons.get()) {
-        return;
-      }
       try {
         waitUntilReady(DEFAULT_WAIT_TIMEOUT_SEC, TimeUnit.SECONDS);
       } catch (InterruptedException e) {
@@ -163,6 +160,9 @@ public class ClusterSingletons {
         log.warn("Timed out during initialization of ClusterSingleton-s (waited {} sec)", DEFAULT_WAIT_TIMEOUT_SEC);
         return;
       }
+      if (!runSingletons.get()) {
+        return;
+      }
       singletonMap.forEach((name, singleton) -> {
         if (!runSingletons.get()) {
           return;
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 0a92a4e..40d6ab3 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -253,6 +253,11 @@ public class CoreContainer {
           getZkController().getOverseer() != null &&
           !getZkController().getOverseer().isClosed(),
       (r) -> this.runAsync(r));
+
+  private final ClusterEventProducerFactory clusterEventProducerFactory = new ClusterEventProducerFactory(this);
+  // initially these are the same to collect the plugin-based listeners during init
+  private ClusterEventProducer clusterEventProducer = clusterEventProducerFactory;
+
   private PackageStoreAPI packageStoreAPI;
   private PackageLoader packageLoader;
 
@@ -672,6 +677,7 @@ public class CoreContainer {
     }
 
     customContainerPlugins.registerListener(clusterSingletons.getPluginRegistryListener());
+    customContainerPlugins.registerListener(clusterEventProducerFactory.getPluginRegistryListener());
 
     packageStoreAPI = new PackageStoreAPI(this);
     containerHandlers.getApiBag().registerObject(packageStoreAPI.readAPI);
@@ -887,6 +893,9 @@ public class CoreContainer {
       containerHandlers.getApiBag().registerObject(containerPluginsApi.readAPI);
       containerHandlers.getApiBag().registerObject(containerPluginsApi.editAPI);
 
+      // create target ClusterEventProducer (possibly from plugins)
+      clusterEventProducer = clusterEventProducerFactory.create(customContainerPlugins);
+
       // init ClusterSingleton-s
 
       // register the handlers that are also ClusterSingleton
@@ -2127,6 +2136,10 @@ public class CoreContainer {
     return clusterSingletons;
   }
 
+  public ClusterEventProducer getClusterEventProducer() {
+    return clusterEventProducer;
+  }
+
   static {
     ExecutorUtil.addThreadLocalProvider(SolrRequestInfo.getInheritableThreadLocalProvider());
   }