You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2021/03/10 09:56:04 UTC

[lucene] 08/42: cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit a874bfc5e517234b66b6a0630b6e898bbfb9969d
Author: noble <no...@apache.org>
AuthorDate: Mon Jul 13 12:06:19 2020 +1000

    cleanup
---
 solr/core/src/java/org/apache/solr/core/CoreContainer.java       | 9 +++++----
 solr/core/src/java/org/apache/solr/core/SolrCore.java            | 8 +++++++-
 .../src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java  | 2 +-
 3 files changed, 13 insertions(+), 6 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 b0c76c3..1d24c8d 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -37,6 +37,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -1591,7 +1592,7 @@ public class CoreContainer {
 
   /**
    * reloads a core
-   * refer {@link CoreContainer#reload(String, Long)} for details
+   * refer {@link CoreContainer#reload(String, UUID)} for details
    */
   public void reload(String name) {
     reload(name, null);
@@ -1602,16 +1603,16 @@ public class CoreContainer {
    * and processed by the old core
    *
    * @param name the name of the SolrCore to reload
-   * @param coreStartTime The start time of the core
+   * @param coreId The unique Id of the core
    */
-  public void reload(String name, Long coreStartTime) {
+  public void reload(String name, UUID coreId) {
     if (isShutDown) {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
     SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core != null) {
-      if(coreStartTime != null && core.startNanoTime.longValue() != coreStartTime) {
+      if(coreId != null && core.uniqueId != coreId) {
         //trying to reload an already unloaded core
         return;
       }
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 2964cb6..e5f8707 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -47,6 +47,7 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -194,6 +195,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   private String name;
   private String logid; // used to show what name is set
+  /**
+   * A unique id to differentiate multiple instances of the same core
+   * If we reload a core, the name remains same , but the id will be new
+   */
+  public final UUID uniqueId = UUID.randomUUID();
 
   private boolean isReloaded = false;
 
@@ -208,7 +214,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final SolrCoreState solrCoreState;
 
   private final Date startTime = new Date();
-  public final Long startNanoTime = System.nanoTime();
+  private final long startNanoTime = System.nanoTime();
   private final RequestHandlers reqHandlers;
   private final PluginBag<SearchComponent> searchComponents = new PluginBag<>(SearchComponent.class, this);
   private final PluginBag<UpdateRequestProcessorFactory> updateProcessors = new PluginBag<>(UpdateRequestProcessorFactory.class, this, true);
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
index 5532615..f28baf7 100644
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
@@ -54,7 +54,7 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
   public void changed(PackageLoader.Package pkg, Ctx ctx) {
     PackageLoader.Package.Version version = pkg.getLatest(solrCore.getSolrConfig().maxPackageVersion(info.cName.pkg));
     if(version != this.version) {
-      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.startNanoTime));
+      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.uniqueId));
     }
   }