Do not cache the QueryShardContext in PercolatorFieldMapper: it is cheap to create.
This commit is contained in:
parent
aa871f839a
commit
df4482fdc8
|
@ -234,33 +234,13 @@ public class PercolatorFieldMapper extends FieldMapper {
|
||||||
KeywordFieldMapper queryTermsField, KeywordFieldMapper extractionResultField,
|
KeywordFieldMapper queryTermsField, KeywordFieldMapper extractionResultField,
|
||||||
BinaryFieldMapper queryBuilderField) {
|
BinaryFieldMapper queryBuilderField) {
|
||||||
super(simpleName, fieldType, defaultFieldType, indexSettings, multiFields, copyTo);
|
super(simpleName, fieldType, defaultFieldType, indexSettings, multiFields, copyTo);
|
||||||
this.queryShardContext = new QueryShardContextSupplierCache(queryShardContext);
|
this.queryShardContext = queryShardContext;
|
||||||
this.queryTermsField = queryTermsField;
|
this.queryTermsField = queryTermsField;
|
||||||
this.extractionResultField = extractionResultField;
|
this.extractionResultField = extractionResultField;
|
||||||
this.queryBuilderField = queryBuilderField;
|
this.queryBuilderField = queryBuilderField;
|
||||||
this.mapUnmappedFieldAsString = INDEX_MAP_UNMAPPED_FIELDS_AS_STRING_SETTING.get(indexSettings);
|
this.mapUnmappedFieldAsString = INDEX_MAP_UNMAPPED_FIELDS_AS_STRING_SETTING.get(indexSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class QueryShardContextSupplierCache implements Supplier<QueryShardContext> {
|
|
||||||
private final Supplier<QueryShardContext> supplier;
|
|
||||||
private volatile QueryShardContext context;
|
|
||||||
|
|
||||||
QueryShardContextSupplierCache(Supplier<QueryShardContext> supplier) {
|
|
||||||
this.supplier = supplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public QueryShardContext get() {
|
|
||||||
QueryShardContext context = this.context;
|
|
||||||
if (context == null) {
|
|
||||||
context = this.context = supplier.get();
|
|
||||||
}
|
|
||||||
// return a copy
|
|
||||||
return new QueryShardContext(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FieldMapper updateFieldType(Map<String, MappedFieldType> fullNameToFieldType) {
|
public FieldMapper updateFieldType(Map<String, MappedFieldType> fullNameToFieldType) {
|
||||||
PercolatorFieldMapper updated = (PercolatorFieldMapper) super.updateFieldType(fullNameToFieldType);
|
PercolatorFieldMapper updated = (PercolatorFieldMapper) super.updateFieldType(fullNameToFieldType);
|
||||||
|
|
Loading…
Reference in New Issue