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 2021/02/02 13:37:19 UTC

[lucene-solr] branch reference_impl_dev updated (168b3a0 -> 29b0f72)

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

markrmiller pushed a change to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


    from 168b3a0  @1301 Improve buffer on SolrCore construction.
     new f7839c4  @1302 Give fieldTypes same treatment as fields.
     new 29b0f72  @1303 Finish up schema.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ...ExtractNamedEntitiesUpdateProcessorFactory.java |  2 +-
 .../solr/schema/AbstractSubTypeFieldType.java      |  2 +-
 .../src/java/org/apache/solr/schema/BBoxField.java |  8 ++---
 .../java/org/apache/solr/schema/IndexSchema.java   | 13 ++++----
 .../org/apache/solr/schema/ManagedIndexSchema.java | 38 +++++++++++-----------
 .../java/org/apache/solr/schema/SchemaManager.java |  6 ++--
 .../solr/schema/SpatialPointVectorFieldType.java   | 29 ++++++++---------
 .../similarities/SchemaSimilarityFactory.java      |  2 +-
 .../suggest/fst/AnalyzingInfixLookupFactory.java   |  2 +-
 .../suggest/fst/AnalyzingLookupFactory.java        |  2 +-
 .../suggest/fst/BlendedInfixLookupFactory.java     |  2 +-
 .../suggest/fst/FreeTextLookupFactory.java         |  2 +-
 .../spelling/suggest/fst/FuzzyLookupFactory.java   |  2 +-
 .../AddSchemaFieldsUpdateProcessorFactory.java     |  2 +-
 .../processor/DistributedUpdateProcessor.java      |  4 +--
 .../org/apache/solr/core/TestXIncludeConfig.java   |  8 ++---
 .../PhrasesIdentificationComponentTest.java        | 12 +++----
 .../solr/response/TestRetrieveFieldsOptimizer.java |  2 +-
 .../apache/solr/schema/CurrencyFieldTypeTest.java  |  2 +-
 .../test/org/apache/solr/schema/PolyFieldTest.java |  3 +-
 .../solr/schema/ResolveAnalyzerByNameTest.java     | 20 ++++++------
 .../org/apache/solr/schema/TestSchemaField.java    |  2 +-
 .../apache/solr/schema/TestSortableTextField.java  |  4 +--
 .../org/apache/solr/search/LargeFieldTest.java     |  2 +-
 24 files changed, 84 insertions(+), 87 deletions(-)


[lucene-solr] 01/02: @1302 Give fieldTypes same treatment as fields.

Posted by ma...@apache.org.
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

commit f7839c4450b6e5ccd4360cdacb0b25c7c28fae3e
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Mon Feb 1 20:23:49 2021 -0600

    @1302 Give fieldTypes same treatment as fields.
---
 .../java/org/apache/solr/schema/IndexSchema.java    |  2 +-
 .../org/apache/solr/schema/ManagedIndexSchema.java  | 21 +++++++++------------
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index d6c9054..aafc12b 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -146,7 +146,7 @@ public class IndexSchema {
   protected final Properties substitutableProperties;
 
   protected volatile Map<String,SchemaField> fields = Collections.emptyMap();
-  protected volatile Map<String,FieldType> fieldTypes = new HashMap<>();
+  protected volatile Map<String,FieldType> fieldTypes = Collections.emptyMap();
 
   protected volatile List<SchemaField> fieldsWithDefaultValue = new ArrayList<>();
   protected volatile Collection<SchemaField> requiredFields = new HashSet<>();
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 d0ca8d4..8401ba9 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -1003,12 +1003,7 @@ public final class ManagedIndexSchema extends IndexSchema {
     }
 
     ManagedIndexSchema newSchema = shallowCopy(true);
-
-    // we shallow copied fieldTypes, but since we're changing them, we need to do a true
-    // deep copy before adding the new field types
-    HashMap<String,FieldType> clone =
-        (HashMap<String,FieldType>)((HashMap<String,FieldType>)newSchema.fieldTypes).clone();
-    newSchema.fieldTypes = clone;
+    Map<String,FieldType> fieldTypes = new HashMap<>(newSchema.fieldTypes);
 
     // do a first pass to validate the field types don't exist already
     for (FieldType fieldType : fieldTypeList) {
@@ -1018,8 +1013,9 @@ public final class ManagedIndexSchema extends IndexSchema {
             "Field type '" + typeName + "' already exists!");
       }
 
-      newSchema.fieldTypes.put(typeName, fieldType);
+      fieldTypes.put(typeName, fieldType);
     }
+    newSchema.fieldTypes = Collections.unmodifiableMap(fieldTypes);
 
     if (persist) {
       boolean success = newSchema.persistManagedSchema(false);
@@ -1105,8 +1101,8 @@ public final class ManagedIndexSchema extends IndexSchema {
       newSchema = shallowCopy(true);
 
       Map<String,SchemaField> fields = new HashMap<>(newSchema.fields);
+      Map<String,FieldType> fieldTypes = new HashMap<>(newSchema.fieldTypes);
       // clone data structures before modifying them
-      newSchema.fieldTypes = (Map<String,FieldType>)((HashMap<String,FieldType>)fieldTypes).clone();
       newSchema.copyFieldsMap = cloneCopyFieldsMap(copyFieldsMap);
       newSchema.copyFieldTargetCounts
           = (Map<SchemaField,Integer>)((HashMap<SchemaField,Integer>)copyFieldTargetCounts).clone();
@@ -1115,9 +1111,9 @@ public final class ManagedIndexSchema extends IndexSchema {
       newSchema.dynamicFields = new DynamicField[dynamicFields.length];
       System.arraycopy(dynamicFields, 0, newSchema.dynamicFields, 0, dynamicFields.length);
 
-      newSchema.fieldTypes.remove(typeName);
+      fieldTypes.remove(typeName);
       FieldType replacementFieldType = newSchema.newFieldType(typeName, replacementClassName, replacementArgs);
-      newSchema.fieldTypes.put(typeName, replacementFieldType);
+      fieldTypes.put(typeName, replacementFieldType);
 
       // Rebuild fields of the type being replaced
       List<CopyField> copyFieldsToRebuild = new ArrayList<>();
@@ -1156,6 +1152,7 @@ public final class ManagedIndexSchema extends IndexSchema {
         fields.put(replacementField.getName(), replacementField);
       }
       newSchema.fields = Collections.unmodifiableMap(fields);
+      newSchema.fieldTypes = Collections.unmodifiableMap(fieldTypes);
       // Remove copy fields where the target is of the type being replaced; remember them to rebuild
       Iterator<Map.Entry<String,List<CopyField>>> copyFieldsMapIter = newSchema.copyFieldsMap.entrySet().iterator();
       while (copyFieldsMapIter.hasNext()) {
@@ -1439,15 +1436,15 @@ public final class ManagedIndexSchema extends IndexSchema {
 
     if (includeFieldDataStructures) {
       // These need new collections, since addFields() can add members to them
-      newSchema.fields = fields;
       newSchema.fieldsWithDefaultValue.addAll(fieldsWithDefaultValue);
       newSchema.requiredFields.addAll(requiredFields);
     }
 
     // These don't need new collections - addFields() won't add members to them
-    newSchema.fieldTypes = fieldTypes;
     newSchema.dynamicFields = dynamicFields;
     newSchema.dynamicCopyFields = dynamicCopyFields;
+    newSchema.fields = fields;
+    newSchema.fieldTypes = fieldTypes;
     newSchema.copyFieldsMap = copyFieldsMap;
     newSchema.copyFieldTargetCounts = copyFieldTargetCounts;
     newSchema.schemaAware = schemaAware;


[lucene-solr] 02/02: @1303 Finish up schema.

Posted by ma...@apache.org.
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

commit 29b0f72aa5b1e13d0467318405b2622fbd0ca86c
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Feb 2 07:35:33 2021 -0600

    @1303 Finish up schema.
---
 ...ExtractNamedEntitiesUpdateProcessorFactory.java |  2 +-
 .../solr/schema/AbstractSubTypeFieldType.java      |  2 +-
 .../src/java/org/apache/solr/schema/BBoxField.java |  8 +++---
 .../java/org/apache/solr/schema/IndexSchema.java   | 11 ++++----
 .../org/apache/solr/schema/ManagedIndexSchema.java | 17 +++++++------
 .../java/org/apache/solr/schema/SchemaManager.java |  6 ++---
 .../solr/schema/SpatialPointVectorFieldType.java   | 29 ++++++++++------------
 .../similarities/SchemaSimilarityFactory.java      |  2 +-
 .../suggest/fst/AnalyzingInfixLookupFactory.java   |  2 +-
 .../suggest/fst/AnalyzingLookupFactory.java        |  2 +-
 .../suggest/fst/BlendedInfixLookupFactory.java     |  2 +-
 .../suggest/fst/FreeTextLookupFactory.java         |  2 +-
 .../spelling/suggest/fst/FuzzyLookupFactory.java   |  2 +-
 .../AddSchemaFieldsUpdateProcessorFactory.java     |  2 +-
 .../processor/DistributedUpdateProcessor.java      |  4 +--
 .../org/apache/solr/core/TestXIncludeConfig.java   |  8 +++---
 .../PhrasesIdentificationComponentTest.java        | 12 ++++-----
 .../solr/response/TestRetrieveFieldsOptimizer.java |  2 +-
 .../apache/solr/schema/CurrencyFieldTypeTest.java  |  2 +-
 .../test/org/apache/solr/schema/PolyFieldTest.java |  3 +--
 .../solr/schema/ResolveAnalyzerByNameTest.java     | 20 +++++++--------
 .../org/apache/solr/schema/TestSchemaField.java    |  2 +-
 .../apache/solr/schema/TestSortableTextField.java  |  4 +--
 .../org/apache/solr/search/LargeFieldTest.java     |  2 +-
 24 files changed, 74 insertions(+), 74 deletions(-)

diff --git a/solr/contrib/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java b/solr/contrib/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java
index ab2639a..074ae27 100644
--- a/solr/contrib/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java
+++ b/solr/contrib/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java
@@ -455,7 +455,7 @@ public class OpenNLPExtractNamedEntitiesUpdateProcessorFactory
       {
         try {
           nerTaggerOp = OpenNLPOpsFactory.getNERTagger(modelFile);
-          FieldType fieldType = req.getSchema().getFieldTypeByName(analyzerFieldType);
+          FieldType fieldType = req.getSchema().getFieldTypeByName(analyzerFieldType, req.getSchema().getFieldTypes());
           if (fieldType == null) {
             throw new SolrException
                 (SERVER_ERROR, ANALYZER_FIELD_TYPE_PARAM + " '" + analyzerFieldType + "' not found in the schema.");
diff --git a/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java b/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java
index 2f20fa1..e4c5922 100644
--- a/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java
@@ -58,7 +58,7 @@ public abstract class AbstractSubTypeFieldType extends FieldType implements Sche
     subSuffix = p.get(SUB_FIELD_SUFFIX);
     if (subFieldType != null) {
       args.remove(SUB_FIELD_TYPE);
-      subType = schema.getFieldTypeByName(subFieldType.trim());
+      subType = schema.getFieldTypeByName(subFieldType.trim(), schema.getFieldTypes());
       if (subType == null) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "subtype not found " + subFieldType.trim() + " in " + schema.getFieldTypes());
       }
diff --git a/solr/core/src/java/org/apache/solr/schema/BBoxField.java b/solr/core/src/java/org/apache/solr/schema/BBoxField.java
index 5607f3b..58a2f79 100644
--- a/solr/core/src/java/org/apache/solr/schema/BBoxField.java
+++ b/solr/core/src/java/org/apache/solr/schema/BBoxField.java
@@ -77,8 +77,8 @@ public class BBoxField extends AbstractSpatialFieldType<BBoxStrategy> implements
   @Override
   public void inform(IndexSchema schema) {
     this.schema = schema;
-    FieldType numberType = schema.getFieldTypeByName(numberTypeName);
-    FieldType booleanType = schema.getFieldTypeByName(booleanTypeName);
+    FieldType numberType = schema.getFieldTypeByName(numberTypeName, schema.getFieldTypes());
+    FieldType booleanType = schema.getFieldTypeByName(booleanTypeName, schema.getFieldTypes());
 
     if (numberType == null) {
       throw new RuntimeException("Cannot find number fieldType: " + numberTypeName);
@@ -129,8 +129,8 @@ public class BBoxField extends AbstractSpatialFieldType<BBoxStrategy> implements
   @Override
   protected BBoxStrategy newSpatialStrategy(String fieldName) {
     //if it's a dynamic field, we register the sub-fields now.
-    FieldType numberType = schema.getFieldTypeByName(numberTypeName);
-    FieldType booleanType = schema.getFieldTypeByName(booleanTypeName);
+    FieldType numberType = schema.getFieldTypeByName(numberTypeName, schema.getFieldTypes());
+    FieldType booleanType = schema.getFieldTypeByName(booleanTypeName, schema.getFieldTypes());
     if (schema.isDynamicField(fieldName)) {
       registerSubFields(schema, fieldName, numberType, booleanType);
     }
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index aafc12b..d421019 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -1333,7 +1333,7 @@ public class IndexSchema {
     // Hmmm, default field could also be implemented with a dynamic field of "*".
     // It would have to be special-cased and only used if nothing else matched.
     /***  REMOVED -YCS
-    if (defaultFieldType != null) return new SchemaField(fieldName,defaultFieldType);
+    if (defaultFieldType != null) return new SchemaField(fieldName,defaultFieldType, fields);
     ***/
     throw new SolrException(ErrorCode.BAD_REQUEST,"undefined field: \""+fieldName+"\"");
   }
@@ -1362,10 +1362,11 @@ public class IndexSchema {
   /**
    * Given the name of a {@link org.apache.solr.schema.FieldType} (not to be confused with {@link #getFieldType(String)} which
    * takes in the name of a field), return the {@link org.apache.solr.schema.FieldType}.
-   * @param fieldTypeName The name of the {@link org.apache.solr.schema.FieldType}
+   * @param fieldTypeName The name of the {@link FieldType}
+   * @param fieldTypes
    * @return The {@link org.apache.solr.schema.FieldType} or null.
    */
-  public FieldType getFieldTypeByName(String fieldTypeName){
+  public FieldType getFieldTypeByName(String fieldTypeName, Map<String,FieldType> fieldTypes){
     return fieldTypes.get(fieldTypeName);
   }
 
@@ -1927,7 +1928,7 @@ public class IndexSchema {
    * @param fieldTypeList a list of FieldTypes to add
    * @param persist to persist the schema or not
    * @return a new IndexSchema based on this schema with the new types added
-   * @see #newFieldType(String, String, Map)
+   * @see #newFieldType(String, String, Map, Map)
    */
   public IndexSchema addFieldTypes(List<FieldType> fieldTypeList, boolean persist) {
     String msg = "This IndexSchema is not mutable.";
@@ -1981,7 +1982,7 @@ public class IndexSchema {
    * @return The created FieldType
    * @see #addFieldTypes(java.util.List, boolean)
    */
-  public FieldType newFieldType(String typeName, String className, Map<String,?> options) {
+  public FieldType newFieldType(String typeName, String className, Map<String,?> options, Map<String,FieldType> fieldTypes) {
     String msg = "This IndexSchema is not mutable.";
     log.error(msg);
     throw new SolrException(ErrorCode.SERVER_ERROR, msg);
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 8401ba9..210c36a 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -1008,7 +1008,7 @@ public final class ManagedIndexSchema extends IndexSchema {
     // do a first pass to validate the field types don't exist already
     for (FieldType fieldType : fieldTypeList) {
       String typeName = fieldType.getTypeName();
-      if (newSchema.getFieldTypeByName(typeName) != null) {
+      if (newSchema.getFieldTypeByName(typeName, fieldTypes) != null) {
         throw new FieldExistsException(ErrorCode.BAD_REQUEST,
             "Field type '" + typeName + "' already exists!");
       }
@@ -1048,6 +1048,7 @@ public final class ManagedIndexSchema extends IndexSchema {
   public ManagedIndexSchema deleteFieldTypes(Collection<String> names) {
     ManagedIndexSchema newSchema;
     if (isMutable) {
+
       for (String name : names) {
         if ( ! fieldTypes.containsKey(name)) {
           String msg = "The field type '" + name + "' is not present in this schema, and so cannot be deleted.";
@@ -1067,9 +1068,11 @@ public final class ManagedIndexSchema extends IndexSchema {
         }
       }
       newSchema = shallowCopy(true);
+      Map<String,FieldType> fieldTypes = new HashMap<>(newSchema.fieldTypes);
       for (String name : names) {
-        newSchema.fieldTypes.remove(name);
+        fieldTypes.remove(name);
       }
+      newSchema.fieldTypes = Collections.unmodifiableMap(fieldTypes);
       newSchema.postReadInform();
       newSchema.refreshAnalyzers();
     } else {
@@ -1112,7 +1115,7 @@ public final class ManagedIndexSchema extends IndexSchema {
       System.arraycopy(dynamicFields, 0, newSchema.dynamicFields, 0, dynamicFields.length);
 
       fieldTypes.remove(typeName);
-      FieldType replacementFieldType = newSchema.newFieldType(typeName, replacementClassName, replacementArgs);
+      FieldType replacementFieldType = newSchema.newFieldType(typeName, replacementClassName, replacementArgs, fieldTypes);
       fieldTypes.put(typeName, replacementFieldType);
 
       // Rebuild fields of the type being replaced
@@ -1277,7 +1280,7 @@ public final class ManagedIndexSchema extends IndexSchema {
           String msg = "Field '" + fieldName + "' already exists.";
           throw new SolrException(ErrorCode.BAD_REQUEST, msg);
         }
-        FieldType type = getFieldTypeByName(fieldType);
+        FieldType type = getFieldTypeByName(fieldType, fieldTypes);
         if (null == type) {
           String msg = "Field '" + fieldName + "': Field type '" + fieldType + "' not found.";
           log.error(msg);
@@ -1306,7 +1309,7 @@ public final class ManagedIndexSchema extends IndexSchema {
     SchemaField sf;
     if (isMutable) {
       try {
-        FieldType type = getFieldTypeByName(fieldType);
+        FieldType type = getFieldTypeByName(fieldType, fieldTypes);
         if (null == type) {
           String msg = "Dynamic field '" + fieldNamePattern + "': Field type '" + fieldType + "' not found.";
           log.error(msg);
@@ -1332,14 +1335,14 @@ public final class ManagedIndexSchema extends IndexSchema {
   }
 
   @Override
-  public FieldType newFieldType(String typeName, String className, Map<String, ?> options) {
+  public FieldType newFieldType(String typeName, String className, Map<String, ?> options, Map<String,FieldType> fieldTypes) {
     if (!isMutable) {
       String msg = "This ManagedIndexSchema is not mutable.";
       log.error(msg);
       throw new SolrException(ErrorCode.SERVER_ERROR, msg);
     }
 
-    if (getFieldTypeByName(typeName) != null) {
+    if (getFieldTypeByName(typeName, fieldTypes) != null) {
       String msg = "Field type '" + typeName + "' already exists.";
       log.error(msg);
       throw new SolrException(ErrorCode.BAD_REQUEST, msg);
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index 4b65719..729892d 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -195,7 +195,7 @@ public class SchemaManager {
         if (op.hasError())
           return false;
         try {
-          FieldType fieldType = mgr.managedIndexSchema.newFieldType(name, className, op.getDataMap());
+          FieldType fieldType = mgr.managedIndexSchema.newFieldType(name, className, op.getDataMap(), mgr.managedIndexSchema.fieldTypes);
           mgr.managedIndexSchema = mgr.managedIndexSchema.addFieldTypes(singletonList(fieldType), false);
           return true;
         } catch (Exception e) {
@@ -367,7 +367,7 @@ public class SchemaManager {
         String type = op.getStr(TYPE);
         if (op.hasError())
           return false;
-        FieldType ft = mgr.managedIndexSchema.getFieldTypeByName(type);
+        FieldType ft = mgr.managedIndexSchema.getFieldTypeByName(type, mgr.managedIndexSchema.fieldTypes);
         if (ft == null) {
           op.addError("No such field type '" + type + "'");
           return false;
@@ -387,7 +387,7 @@ public class SchemaManager {
         String type = op.getStr(TYPE);
         if (op.hasError())
           return false;
-        FieldType ft = mgr.managedIndexSchema.getFieldTypeByName(type);
+        FieldType ft = mgr.managedIndexSchema.getFieldTypeByName(type, mgr.managedIndexSchema.fieldTypes);
         if (ft == null) {
           op.addError("No such field type '" + type + "'");
           return  false;
diff --git a/solr/core/src/java/org/apache/solr/schema/SpatialPointVectorFieldType.java b/solr/core/src/java/org/apache/solr/schema/SpatialPointVectorFieldType.java
index eecec28..7d15b57 100644
--- a/solr/core/src/java/org/apache/solr/schema/SpatialPointVectorFieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/SpatialPointVectorFieldType.java
@@ -16,8 +16,7 @@
  */
 package org.apache.solr.schema;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.solr.legacy.LegacyFieldType;
@@ -54,7 +53,7 @@ public class SpatialPointVectorFieldType extends AbstractSpatialFieldType<PointV
    */
   @Override
   public void inform(IndexSchema schema) {
-    FieldType fieldType = schema.getFieldTypeByName(numberFieldName);
+    FieldType fieldType = schema.getFieldTypeByName(numberFieldName, schema.getFieldTypes());
     if( fieldType == null ) {
       throw new RuntimeException( "Can not find number field: "+ numberFieldName);
     }
@@ -70,19 +69,17 @@ public class SpatialPointVectorFieldType extends AbstractSpatialFieldType<PointV
     // In theory we should fix this, but since this class is already deprecated, we'll leave it alone
     // to simplify the risk of back-compat break for existing users.
 
-    // TODO: this is not legal
-//    final int p = (INDEXED | TOKENIZED | OMIT_NORMS | OMIT_TF_POSITIONS | UNINVERTIBLE);
-//    List<SchemaField> newFields = new ArrayList<>();
-//    for( SchemaField sf : schema.getFields().values() ) {
-//      if( sf.getType() == this ) {
-//        String name = sf.getName();
-//        newFields.add(new SchemaField(name + PointVectorStrategy.SUFFIX_X, fieldType, p, null));
-//        newFields.add(new SchemaField(name + PointVectorStrategy.SUFFIX_Y, fieldType, p, null));
-//      }
-//    }
-//    for (SchemaField newField : newFields) {
-//      schema.getFields().put(newField.getName(), newField);
-//    }
+
+    final int p = (INDEXED | TOKENIZED | OMIT_NORMS | OMIT_TF_POSITIONS | UNINVERTIBLE);
+    Map<String,SchemaField> newFields = new HashMap<>(schema.getFields());
+    for( SchemaField sf : schema.getFields().values() ) {
+      if( sf.getType() == this ) {
+        String name = sf.getName();
+        newFields.put(name, new SchemaField(name + PointVectorStrategy.SUFFIX_X, fieldType, p, null));
+        newFields.put(name, new SchemaField(name + PointVectorStrategy.SUFFIX_Y, fieldType, p, null));
+      }
+    }
+    schema.setFields(newFields);
   }
 
   @Override
diff --git a/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
index e682b9ee..a8c8051 100644
--- a/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
+++ b/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
@@ -115,7 +115,7 @@ public class SchemaSimilarityFactory extends SimilarityFactory implements SolrCo
             new BM25Similarity() :
             new LegacyBM25Similarity();
       } else {
-        FieldType defSimFT = core.getLatestSchema().getFieldTypeByName(defaultSimFromFieldType);
+        FieldType defSimFT = core.getLatestSchema().getFieldTypeByName(defaultSimFromFieldType, core.getLatestSchema().getFieldTypes());
         if (null == defSimFT) {
           throw new SolrException(ErrorCode.SERVER_ERROR,
                                   "SchemaSimilarityFactory configured with " + INIT_OPT + "='" +
diff --git a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java
index 68bfaf6..89df295 100644
--- a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java
+++ b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingInfixLookupFactory.java
@@ -88,7 +88,7 @@ public class AnalyzingInfixLookupFactory extends LookupFactory {
     if (fieldTypeName == null) {
       throw new IllegalArgumentException("Error in configuration: " + QUERY_ANALYZER + " parameter is mandatory");
     }
-    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString());
+    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString(), core.getLatestSchema().getFieldTypes());
     if (ft == null) {
       throw new IllegalArgumentException("Error in configuration: " + fieldTypeName.toString() + " is not defined in the schema");
     }
diff --git a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingLookupFactory.java b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingLookupFactory.java
index eb3ab5f..42f9f9e 100644
--- a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingLookupFactory.java
+++ b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/AnalyzingLookupFactory.java
@@ -81,7 +81,7 @@ public class AnalyzingLookupFactory extends LookupFactory {
     if (fieldTypeName == null) {
       throw new IllegalArgumentException("Error in configuration: " + QUERY_ANALYZER + " parameter is mandatory");
     }
-    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString());
+    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString(), core.getLatestSchema().getFieldTypes());
     if (ft == null) {
       throw new IllegalArgumentException("Error in configuration: " + fieldTypeName.toString() + " is not defined in the schema");
     }
diff --git a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java
index 32a0ff0..7ca5aaa 100644
--- a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java
+++ b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/BlendedInfixLookupFactory.java
@@ -76,7 +76,7 @@ public class BlendedInfixLookupFactory extends AnalyzingInfixLookupFactory {
     if (fieldTypeName == null) {
       throw new IllegalArgumentException("Error in configuration: " + QUERY_ANALYZER + " parameter is mandatory");
     }
-    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString());
+    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString(), core.getLatestSchema().getFieldTypes());
     if (ft == null) {
       throw new IllegalArgumentException("Error in configuration: " + fieldTypeName.toString() + " is not defined in the schema");
     }
diff --git a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FreeTextLookupFactory.java b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FreeTextLookupFactory.java
index dfd9d669..c21af44 100644
--- a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FreeTextLookupFactory.java
+++ b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FreeTextLookupFactory.java
@@ -58,7 +58,7 @@ public class FreeTextLookupFactory extends LookupFactory {
     if (fieldTypeName == null) {
       throw new IllegalArgumentException("Error in configuration: " + QUERY_ANALYZER + " parameter is mandatory");
     }
-    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString());
+    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString(), core.getLatestSchema().getFieldTypes());
     if (ft == null) {
       throw new IllegalArgumentException("Error in configuration: " + fieldTypeName.toString() + " is not defined in the schema");
     }
diff --git a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FuzzyLookupFactory.java b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FuzzyLookupFactory.java
index 236bc7b..dc2c7bb 100644
--- a/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FuzzyLookupFactory.java
+++ b/solr/core/src/java/org/apache/solr/spelling/suggest/fst/FuzzyLookupFactory.java
@@ -76,7 +76,7 @@ public class FuzzyLookupFactory extends LookupFactory {
       throw new IllegalArgumentException("Error in configuration: " + AnalyzingLookupFactory.QUERY_ANALYZER + " parameter is mandatory");
     }
     // retrieve index and query analyzers for the field
-    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString());
+    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString(), core.getLatestSchema().getFieldTypes());
     if (ft == null) {
       throw new IllegalArgumentException("Error in configuration: " + fieldTypeName.toString() + " is not defined in the schema");
     }
diff --git a/solr/core/src/java/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.java
index 888926f..14d7ab2 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/AddSchemaFieldsUpdateProcessorFactory.java
@@ -321,7 +321,7 @@ public class AddSchemaFieldsUpdateProcessorFactory extends UpdateRequestProcesso
     public void populateValueClasses(SolrCore core) {
       IndexSchema schema = core.getLatestSchema();
       ClassLoader loader = core.getResourceLoader().getClassLoader();
-      if (null == schema.getFieldTypeByName(fieldTypeName)) {
+      if (null == schema.getFieldTypeByName(fieldTypeName, schema.getFieldTypes())) {
         throw new SolrException(SERVER_ERROR, "fieldType '" + fieldTypeName + "' not found in the schema");
       }
       valueClasses = Collections.synchronizedList(new ArrayList<>());
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
index 269a29f..ce87096 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
@@ -334,7 +334,7 @@ public class DistributedUpdateProcessor extends UpdateRequestProcessor {
           doLocalAdd(cmd);
         } catch (Exception e) {
           if (distFuture != null && isLeader) {
-            distFuture.cancel(true);
+            distFuture.cancel(false);
             cancelCmds.add(cloneCmd);
           }
           if (e instanceof RuntimeException) {
@@ -961,7 +961,7 @@ public class DistributedUpdateProcessor extends UpdateRequestProcessor {
         t = e;
       }
       if (distFuture != null && isLeader) {
-        distFuture.cancel(true);
+        distFuture.cancel(false);
         cancelCmds.add(cmd);
       }
       if (t instanceof SolrException) {
diff --git a/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java b/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
index 9fc6da7..7db5099 100644
--- a/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
+++ b/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
@@ -58,18 +58,18 @@ public class TestXIncludeConfig extends SolrTestCaseJ4 {
     IndexSchema schema = core.getLatestSchema();
     
     // xinclude
-    assertNotNull("ft-included is null", schema.getFieldTypeByName("ft-included"));
+    assertNotNull("ft-included is null", schema.getFieldTypeByName("ft-included", schema.getFieldTypes()));
     assertNotNull("field-included is null", schema.getFieldOrNull("field-included"));
 
     // entity include
     assertNotNull("ft-entity-include1 is null", 
-                  schema.getFieldTypeByName("ft-entity-include1"));
+                  schema.getFieldTypeByName("ft-entity-include1", schema.getFieldTypes()));
     assertNotNull("ft-entity-include2 is null", 
-                  schema.getFieldTypeByName("ft-entity-include2"));
+                  schema.getFieldTypeByName("ft-entity-include2", schema.getFieldTypes()));
 
     // sanity check
     assertNull("ft-entity-include3 is not null",  // Does Not Exist Anywhere
-               schema.getFieldTypeByName("ft-entity-include3"));
+               schema.getFieldTypeByName("ft-entity-include3", schema.getFieldTypes()));
 
   }
 }
diff --git a/solr/core/src/test/org/apache/solr/handler/component/PhrasesIdentificationComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/PhrasesIdentificationComponentTest.java
index 8ec150b..03bdd6b 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/PhrasesIdentificationComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/PhrasesIdentificationComponentTest.java
@@ -583,19 +583,19 @@ public class PhrasesIdentificationComponentTest extends SolrTestCaseJ4 {
     core.close();
     
     assertEquals(3, PhrasesIdentificationComponent.getMaxShingleSize
-                 (schema.getFieldTypeByName("multigrams_3_7").getIndexAnalyzer()));
+                 (schema.getFieldTypeByName("multigrams_3_7", schema.getFieldTypes()).getIndexAnalyzer()));
     assertEquals(7, PhrasesIdentificationComponent.getMaxShingleSize
-                 (schema.getFieldTypeByName("multigrams_3_7").getQueryAnalyzer()));
+                 (schema.getFieldTypeByName("multigrams_3_7", schema.getFieldTypes()).getQueryAnalyzer()));
     
     assertEquals(3, PhrasesIdentificationComponent.getMaxShingleSize
-                 (schema.getFieldTypeByName("multigrams_3").getIndexAnalyzer()));
+                 (schema.getFieldTypeByName("multigrams_3", schema.getFieldTypes()).getIndexAnalyzer()));
     assertEquals(3, PhrasesIdentificationComponent.getMaxShingleSize
-                 (schema.getFieldTypeByName("multigrams_3").getQueryAnalyzer()));
+                 (schema.getFieldTypeByName("multigrams_3", schema.getFieldTypes()).getQueryAnalyzer()));
     
     assertEquals(-1, PhrasesIdentificationComponent.getMaxShingleSize
-                 (schema.getFieldTypeByName("text").getIndexAnalyzer()));
+                 (schema.getFieldTypeByName("text", schema.getFieldTypes()).getIndexAnalyzer()));
     assertEquals(-1, PhrasesIdentificationComponent.getMaxShingleSize
-                 (schema.getFieldTypeByName("text").getQueryAnalyzer()));
+                 (schema.getFieldTypeByName("text", schema.getFieldTypes()).getQueryAnalyzer()));
     
   }
   
diff --git a/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java b/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java
index f504f0f..277f235 100644
--- a/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java
+++ b/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java
@@ -407,7 +407,7 @@ class RetrieveFieldType {
     opts.put("name", name);
     this.solrTypeClass = solrClassMap.get(type);
     opts.put("class", solrTypeClass);
-    solrFieldType = schema.newFieldType(name, solrTypeClass, opts);
+    solrFieldType = schema.newFieldType(name, solrTypeClass, opts, schema.getFieldTypes());
     this.testType = type;
   }
 
diff --git a/solr/core/src/test/org/apache/solr/schema/CurrencyFieldTypeTest.java b/solr/core/src/test/org/apache/solr/schema/CurrencyFieldTypeTest.java
index 7b9c723..9b58a01 100644
--- a/solr/core/src/test/org/apache/solr/schema/CurrencyFieldTypeTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/CurrencyFieldTypeTest.java
@@ -139,7 +139,7 @@ public class CurrencyFieldTypeTest extends SolrTestCaseJ4 {
       assertTrue("Doesn't have a value: " + fields.get(i), hasValue);
     }
 
-    assertEquals(schema.getFieldTypeByName("string").toExternal(fields.get(2)), "1.50,EUR");
+    assertEquals(schema.getFieldTypeByName("string", schema.getFieldTypes()).toExternal(fields.get(2)), "1.50,EUR");
     
     // A few tests on the provider directly
     ExchangeRateProvider p = ((CurrencyFieldType)tmp).getProvider();
diff --git a/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java b/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
index f71ccb2..512b24c 100644
--- a/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
@@ -26,7 +26,6 @@ import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.SolrCore;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 
@@ -60,7 +59,7 @@ public class PolyFieldTest extends SolrTestCaseJ4 {
     assertTrue("Didn't find the expected dynamic field", seen);
     FieldType homeFT = schema.getFieldType("home");
     assertEquals(home.getType(), homeFT);
-    FieldType xy = schema.getFieldTypeByName("xy");
+    FieldType xy = schema.getFieldTypeByName("xy", schema.getFieldTypes());
     assertNotNull(xy);
     assertTrue(xy instanceof PointType);
     assertTrue(xy.isPolyField());
diff --git a/solr/core/src/test/org/apache/solr/schema/ResolveAnalyzerByNameTest.java b/solr/core/src/test/org/apache/solr/schema/ResolveAnalyzerByNameTest.java
index cb45b96..56490bb 100644
--- a/solr/core/src/test/org/apache/solr/schema/ResolveAnalyzerByNameTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/ResolveAnalyzerByNameTest.java
@@ -45,12 +45,12 @@ public class                ResolveAnalyzerByNameTest extends SolrTestCaseJ4 {
     core.close();
     assertTrue( schema.getFieldTypes().containsKey("text_ws") );
     SimpleOrderedMap<Object> analyzerProps =
-        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("text_ws")
+        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("text_ws", schema.getFieldTypes())
         .getNamedPropertyValues(true).get("analyzer");
     checkTokenizerName(analyzerProps, "whitespace");
 
-    assertNotNull(schema.getFieldTypeByName("text_ws").getIndexAnalyzer());
-    assertNotNull(schema.getFieldTypeByName("text_ws").getQueryAnalyzer());
+    assertNotNull(schema.getFieldTypeByName("text_ws", schema.getFieldTypes()).getIndexAnalyzer());
+    assertNotNull(schema.getFieldTypeByName("text_ws", schema.getFieldTypes()).getQueryAnalyzer());
   }
 
   @Test
@@ -61,19 +61,19 @@ public class                ResolveAnalyzerByNameTest extends SolrTestCaseJ4 {
     assertTrue( schema.getFieldTypes().containsKey("text") );
 
     SimpleOrderedMap<Object> indexAnalyzerProps =
-        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("text")
+        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("text", schema.getFieldTypes())
             .getNamedPropertyValues(true).get("indexAnalyzer");
     checkTokenizerName(indexAnalyzerProps, "whitespace");
     checkTokenFilterNames(indexAnalyzerProps, new String[]{"stop", "wordDelimiterGraph", "lowercase", "keywordMarker", "porterStem", "removeDuplicates", "flattenGraph"});
 
     SimpleOrderedMap<Object> queryAnalyzerProps =
-        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("text")
+        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("text", schema.getFieldTypes())
             .getNamedPropertyValues(true).get("queryAnalyzer");
     checkTokenizerName(queryAnalyzerProps, "whitespace");
     checkTokenFilterNames(queryAnalyzerProps, new String[]{"synonymGraph", "stop", "wordDelimiterGraph", "lowercase", "keywordMarker", "porterStem", "removeDuplicates"});
 
-    assertNotNull(schema.getFieldTypeByName("text").getIndexAnalyzer());
-    assertNotNull(schema.getFieldTypeByName("text").getQueryAnalyzer());
+    assertNotNull(schema.getFieldTypeByName("text", schema.getFieldTypes()).getIndexAnalyzer());
+    assertNotNull(schema.getFieldTypeByName("text", schema.getFieldTypes()).getQueryAnalyzer());
   }
 
   @Test
@@ -83,13 +83,13 @@ public class                ResolveAnalyzerByNameTest extends SolrTestCaseJ4 {
     core.close();
     assertTrue( schema.getFieldTypes().containsKey("charfilthtmlmap") );
     SimpleOrderedMap<Object> analyzerProps =
-        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("charfilthtmlmap")
+        (SimpleOrderedMap<Object>)schema.getFieldTypeByName("charfilthtmlmap", schema.getFieldTypes())
             .getNamedPropertyValues(true).get("analyzer");
     checkTokenizerName(analyzerProps, "whitespace");
     checkCharFilterNames(analyzerProps, new String[]{"htmlStrip", "mapping"});
 
-    assertNotNull(schema.getFieldTypeByName("charfilthtmlmap").getIndexAnalyzer());
-    assertNotNull(schema.getFieldTypeByName("charfilthtmlmap").getQueryAnalyzer());
+    assertNotNull(schema.getFieldTypeByName("charfilthtmlmap", schema.getFieldTypes()).getIndexAnalyzer());
+    assertNotNull(schema.getFieldTypeByName("charfilthtmlmap", schema.getFieldTypes()).getQueryAnalyzer());
   }
 
   @Test(expected = SolrException.class)
diff --git a/solr/core/src/test/org/apache/solr/schema/TestSchemaField.java b/solr/core/src/test/org/apache/solr/schema/TestSchemaField.java
index 8963a6b..dc33aad 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestSchemaField.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestSchemaField.java
@@ -42,7 +42,7 @@ public class TestSchemaField extends SolrTestCaseJ4 {
 
   private void assertFieldTypeFormats(String fieldTypeName, String expectedPostingsFormat, String expectedDocValuesFormat) {
     SolrCore core = h.getCore();
-    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName);
+    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName, core.getLatestSchema().getFieldTypes());
     core.close();
     assertNotNull("Field type " + fieldTypeName + " not found  - schema got changed?", ft);
     assertEquals("Field type " + ft.getTypeName() + " wrong " + FieldProperties.POSTINGS_FORMAT
diff --git a/solr/core/src/test/org/apache/solr/schema/TestSortableTextField.java b/solr/core/src/test/org/apache/solr/schema/TestSortableTextField.java
index b4f8f76..aafe5de 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestSortableTextField.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestSortableTextField.java
@@ -60,7 +60,7 @@ public class TestSortableTextField extends SolrTestCaseJ4 {
       // these should all use docValues (either explicitly or implicitly)...
       for (String n : Arrays.asList("keyword_stxt", "whitespace_stxt", "whitespace_f_stxt", "whitespace_l_stxt")) {
 
-        FieldType ft = core.getLatestSchema().getFieldTypeByName(n);
+        FieldType ft = core.getLatestSchema().getFieldTypeByName(n, core.getLatestSchema().getFieldTypes());
         assertEquals("type " + ft.getTypeName() + " should have docvalues - schema got changed?", true, ft.getNamedPropertyValues(true).get("docValues"));
 
       }
@@ -391,7 +391,7 @@ public class TestSortableTextField extends SolrTestCaseJ4 {
     try (SolrCore core = h.getCore()) {
       for (String n : Arrays.asList("keyword_stxt", "whitespace_max0_stxt", "whitespace_max6_stxt")) {
         {
-          FieldType ft = core.getLatestSchema().getFieldTypeByName(n);
+          FieldType ft = core.getLatestSchema().getFieldTypeByName(n, core.getLatestSchema().getFieldTypes());
           assertEquals("type " + ft.getTypeName() + " should not default to useDocValuesAsStored", false, ft.useDocValuesAsStored());
         }
         {
diff --git a/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java b/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
index c4355bd..93f8dd4 100644
--- a/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
@@ -51,7 +51,7 @@ public class LargeFieldTest extends SolrTestCaseJ4 {
       boolean PERSIST_FALSE = false; // don't write to test resource dir
       IndexSchema schema = core.getLatestSchema();
       schema = schema.addFieldTypes(Collections.singletonList(schema.newFieldType("textType", "solr.TextField", // redundant; TODO improve api
-          map("name", "textType", "class", "solr.TextField", "analyzer", map("class", "org.apache.lucene.analysis.standard.StandardAnalyzer")))), PERSIST_FALSE);
+          map("name", "textType", "class", "solr.TextField", "analyzer", map("class", "org.apache.lucene.analysis.standard.StandardAnalyzer")), schema.getFieldTypes())), PERSIST_FALSE);
       schema = schema.addFields(Arrays.asList(schema.newField(LAZY_FIELD, "textType", map()), schema.newField(BIG_FIELD, "textType", map("large", true))), Collections.emptyMap(), PERSIST_FALSE);
 
       core.setLatestSchema(schema);