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:36 UTC
[lucene-solr] branch reference_impl updated: @1303 Finish up schema.
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
The following commit(s) were added to refs/heads/reference_impl by this push:
new d449b01 @1303 Finish up schema.
d449b01 is described below
commit d449b019d71f14918610e3f005f4fc2153d0afd2
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);