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/08/20 17:05:58 UTC
[lucene-solr] branch reference_impl_dev updated: @583 Keep making
Schema threadsafe.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl_dev by this push:
new 415f891 @583 Keep making Schema threadsafe.
415f891 is described below
commit 415f891dba2cb82519fdf2ac0f78e2e63b40a51c
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Aug 20 12:05:33 2020 -0500
@583 Keep making Schema threadsafe.
---
.../src/java/org/apache/solr/core/SolrCore.java | 28 +++++++---------------
.../apache/solr/handler/RequestHandlerBase.java | 2 +-
.../org/apache/solr/schema/ManagedIndexSchema.java | 8 +++----
3 files changed, 12 insertions(+), 26 deletions(-)
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 109f34e..f6adb85 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -1048,7 +1048,14 @@ public final class SolrCore implements SolrInfoBean, Closeable {
return null;
});
- this.updateHandler = initUpdateHandler(updateHandler);
+ if (updateHandler != null) {
+ this.updateHandler = new DirectUpdateHandler2(this, updateHandler);
+ } else {
+ this.updateHandler = new DirectUpdateHandler2(this);
+ }
+
+ coreMetricManager.registerMetricProducer("updateHandler", (SolrMetricProducer) this.updateHandler);
+ infoRegistry.put("updateHandler", this.updateHandler);
initSearcher(prev);
@@ -1188,25 +1195,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
}
}
- private UpdateHandler initUpdateHandler(UpdateHandler updateHandler) {
- String updateHandlerClass = solrConfig.getUpdateHandlerInfo().className;
- if (updateHandlerClass == null) {
- updateHandlerClass = DirectUpdateHandler2.class.getName();
- }
-
- final UpdateHandler newUpdateHandler;
- if (updateHandler == null) {
- newUpdateHandler = createUpdateHandler(updateHandlerClass);
- } else {
- newUpdateHandler = createUpdateHandler(updateHandlerClass, updateHandler);
- }
- if (newUpdateHandler instanceof SolrMetricProducer) {
- coreMetricManager.registerMetricProducer("updateHandler", (SolrMetricProducer) newUpdateHandler);
- }
- infoRegistry.put("updateHandler", newUpdateHandler);
- return newUpdateHandler;
- }
-
/**
* Initializes the core's {@link SolrCoreMetricManager} with a given configuration.
* If metric reporters are configured, they are also initialized for this core.
diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 00602d8..67ea173 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -227,7 +227,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
ParWork.propegateInterrupt(e);
throw new AlreadyClosedException(e);
} catch (Exception e) {
- log.error("Error gett");
+ log.error("Error get", e);
if (req.getCore() != null) {
boolean isTragic = req.getCore().getCoreContainer().checkTragicException(req.getCore());
if (isTragic) {
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index 78c04a2..c3993f0 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -819,8 +819,7 @@ public final class ManagedIndexSchema extends IndexSchema {
newSchema = shallowCopy(true);
// clone data structures before modifying them
newSchema.copyFieldsMap = cloneCopyFieldsMap(copyFieldsMap);
- newSchema.copyFieldTargetCounts
- = (Map<SchemaField,Integer>)((HashMap<SchemaField,Integer>)copyFieldTargetCounts).clone();
+ newSchema.copyFieldTargetCounts = new ConcurrentHashMap<>(copyFieldTargetCounts);
newSchema.dynamicCopyFields = new DynamicCopy[dynamicCopyFields.length];
System.arraycopy(dynamicCopyFields, 0, newSchema.dynamicCopyFields, 0, dynamicCopyFields.length);
@@ -1058,10 +1057,9 @@ public final class ManagedIndexSchema extends IndexSchema {
}
newSchema = shallowCopy(true);
// clone data structures before modifying them
- newSchema.fieldTypes = (Map<String,FieldType>)((HashMap<String,FieldType>)fieldTypes).clone();
+ newSchema.fieldTypes = new ConcurrentHashMap<>(fieldTypes);
newSchema.copyFieldsMap = cloneCopyFieldsMap(copyFieldsMap);
- newSchema.copyFieldTargetCounts
- = (Map<SchemaField,Integer>)((HashMap<SchemaField,Integer>)copyFieldTargetCounts).clone();
+ newSchema.copyFieldTargetCounts = new ConcurrentHashMap<>(copyFieldTargetCounts);
newSchema.dynamicCopyFields = new DynamicCopy[dynamicCopyFields.length];
System.arraycopy(dynamicCopyFields, 0, newSchema.dynamicCopyFields, 0, dynamicCopyFields.length);
newSchema.dynamicFields = new DynamicField[dynamicFields.length];