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/22 18:42:22 UTC

[lucene-solr] 03/22: @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
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 54dc20604998f127b1a96ae36278241113a2c64a
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];