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));
}
}