Skip to content

Commit 678164b

Browse files
authored
Soft immutability for VSConfig (#52729)
1 parent 9df4ee6 commit 678164b

File tree

14 files changed

+123
-134
lines changed

14 files changed

+123
-134
lines changed

modules/aggs-matrix-stats/src/main/java/org/elasticsearch/search/aggregations/support/ArrayValuesSourceAggregatorFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public Aggregator createInternal(SearchContext searchContext,
5353
HashMap<String, ValuesSource> valuesSources = new HashMap<>();
5454

5555
for (Map.Entry<String, ValuesSourceConfig> config : configs.entrySet()) {
56-
ValuesSource vs = config.getValue().toValuesSource(queryShardContext);
56+
ValuesSource vs = config.getValue().toValuesSource();
5757
if (vs != null) {
5858
valuesSources.put(config.getKey(), vs);
5959
}

modules/parent-join/src/main/java/org/elasticsearch/join/aggregations/ChildrenAggregationBuilder.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.elasticsearch.common.io.stream.StreamOutput;
2626
import org.elasticsearch.common.xcontent.XContentBuilder;
2727
import org.elasticsearch.common.xcontent.XContentParser;
28-
import org.elasticsearch.index.fielddata.plain.SortedSetDVOrdinalsIndexFieldData;
2928
import org.elasticsearch.index.mapper.MappedFieldType;
3029
import org.elasticsearch.index.query.QueryShardContext;
3130
import org.elasticsearch.join.mapper.ParentIdFieldMapper;
@@ -34,7 +33,6 @@
3433
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
3534
import org.elasticsearch.search.aggregations.AggregatorFactory;
3635
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
37-
import org.elasticsearch.search.aggregations.support.FieldContext;
3836
import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder;
3937
import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory;
4038
import org.elasticsearch.search.aggregations.support.ValuesSourceConfig;
@@ -109,23 +107,19 @@ protected ValuesSourceAggregatorFactory innerBuild(QueryShardContext queryShardC
109107

110108
@Override
111109
protected ValuesSourceConfig resolveConfig(QueryShardContext queryShardContext) {
112-
ValuesSourceConfig config = new ValuesSourceConfig(CoreValuesSourceType.BYTES);
113-
joinFieldResolveConfig(queryShardContext, config);
114-
return config;
115-
}
116-
117-
private void joinFieldResolveConfig(QueryShardContext queryShardContext, ValuesSourceConfig config) {
110+
ValuesSourceConfig config;
118111
ParentJoinFieldMapper parentJoinFieldMapper = ParentJoinFieldMapper.getMapper(queryShardContext.getMapperService());
119112
ParentIdFieldMapper parentIdFieldMapper = parentJoinFieldMapper.getParentIdFieldMapper(childType, false);
120113
if (parentIdFieldMapper != null) {
121114
parentFilter = parentIdFieldMapper.getParentFilter();
122115
childFilter = parentIdFieldMapper.getChildFilter(childType);
123116
MappedFieldType fieldType = parentIdFieldMapper.fieldType();
124-
final SortedSetDVOrdinalsIndexFieldData fieldData = queryShardContext.getForField(fieldType);
125-
config.fieldContext(new FieldContext(fieldType.name(), fieldData, fieldType));
117+
config = ValuesSourceConfig.resolveFieldOnly(fieldType, queryShardContext);
126118
} else {
127-
config.unmapped(true);
119+
// Unmapped field case
120+
config = ValuesSourceConfig.resolveUnmapped(defaultValueSourceType(), queryShardContext);
128121
}
122+
return config;
129123
}
130124

131125
@Override

modules/parent-join/src/main/java/org/elasticsearch/join/aggregations/ParentAggregationBuilder.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.elasticsearch.common.io.stream.StreamOutput;
2626
import org.elasticsearch.common.xcontent.XContentBuilder;
2727
import org.elasticsearch.common.xcontent.XContentParser;
28-
import org.elasticsearch.index.fielddata.plain.SortedSetDVOrdinalsIndexFieldData;
2928
import org.elasticsearch.index.mapper.MappedFieldType;
3029
import org.elasticsearch.index.query.QueryShardContext;
3130
import org.elasticsearch.join.mapper.ParentIdFieldMapper;
@@ -34,7 +33,6 @@
3433
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
3534
import org.elasticsearch.search.aggregations.AggregatorFactory;
3635
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
37-
import org.elasticsearch.search.aggregations.support.FieldContext;
3836
import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder;
3937
import org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory;
4038
import org.elasticsearch.search.aggregations.support.ValuesSourceConfig;
@@ -109,23 +107,19 @@ protected ValuesSourceAggregatorFactory innerBuild(QueryShardContext queryShardC
109107

110108
@Override
111109
protected ValuesSourceConfig resolveConfig(QueryShardContext queryShardContext) {
112-
ValuesSourceConfig config = new ValuesSourceConfig(CoreValuesSourceType.BYTES);
113-
joinFieldResolveConfig(queryShardContext, config);
114-
return config;
115-
}
116-
117-
private void joinFieldResolveConfig(QueryShardContext queryShardContext, ValuesSourceConfig config) {
110+
ValuesSourceConfig config;
118111
ParentJoinFieldMapper parentJoinFieldMapper = ParentJoinFieldMapper.getMapper(queryShardContext.getMapperService());
119112
ParentIdFieldMapper parentIdFieldMapper = parentJoinFieldMapper.getParentIdFieldMapper(childType, false);
120113
if (parentIdFieldMapper != null) {
121114
parentFilter = parentIdFieldMapper.getParentFilter();
122115
childFilter = parentIdFieldMapper.getChildFilter(childType);
123116
MappedFieldType fieldType = parentIdFieldMapper.fieldType();
124-
final SortedSetDVOrdinalsIndexFieldData fieldData = queryShardContext.getForField(fieldType);
125-
config.fieldContext(new FieldContext(fieldType.name(), fieldData, fieldType));
117+
config = ValuesSourceConfig.resolveFieldOnly(fieldType, queryShardContext);
126118
} else {
127-
config.unmapped(true);
119+
// unmapped case
120+
config = ValuesSourceConfig.resolveUnmapped(defaultValueSourceType(), queryShardContext);
128121
}
122+
return config;
129123
}
130124

131125
@Override

server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.elasticsearch.common.xcontent.XContentBuilder;
2727
import org.elasticsearch.index.query.QueryShardContext;
2828
import org.elasticsearch.script.Script;
29+
import org.elasticsearch.search.aggregations.support.CoreValuesSourceType;
2930
import org.elasticsearch.search.aggregations.support.ValueType;
3031
import org.elasticsearch.search.aggregations.support.ValuesSource;
3132
import org.elasticsearch.search.aggregations.support.ValuesSourceConfig;
@@ -277,7 +278,7 @@ protected abstract CompositeValuesSourceConfig innerBuild(QueryShardContext quer
277278

278279
public final CompositeValuesSourceConfig build(QueryShardContext queryShardContext) throws IOException {
279280
ValuesSourceConfig config = ValuesSourceConfig.resolve(queryShardContext,
280-
valueType, field, script, null, timeZone(), format, name());
281+
valueType, field, script, null, timeZone(), format, CoreValuesSourceType.BYTES, name());
281282
return innerBuild(queryShardContext, config);
282283
}
283284

server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/DateHistogramValuesSourceBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public DateHistogramValuesSourceBuilder offset(long offset) {
252252
@Override
253253
protected CompositeValuesSourceConfig innerBuild(QueryShardContext queryShardContext, ValuesSourceConfig config) throws IOException {
254254
Rounding rounding = dateHistogramInterval.createRounding(timeZone(), offset);
255-
ValuesSource orig = config.toValuesSource(queryShardContext);
255+
ValuesSource orig = config.toValuesSource();
256256
if (orig == null) {
257257
orig = ValuesSource.Numeric.EMPTY;
258258
}

server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/GeoTileGridValuesSourceBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public boolean equals(Object obj) {
129129

130130
@Override
131131
protected CompositeValuesSourceConfig innerBuild(QueryShardContext queryShardContext, ValuesSourceConfig config) throws IOException {
132-
ValuesSource orig = config.toValuesSource(queryShardContext);
132+
ValuesSource orig = config.toValuesSource();
133133
if (orig == null) {
134134
orig = ValuesSource.GeoPoint.EMPTY;
135135
}

server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/HistogramValuesSourceBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public HistogramValuesSourceBuilder interval(double interval) {
111111

112112
@Override
113113
protected CompositeValuesSourceConfig innerBuild(QueryShardContext queryShardContext, ValuesSourceConfig config) throws IOException {
114-
ValuesSource orig = config.toValuesSource(queryShardContext);
114+
ValuesSource orig = config.toValuesSource();
115115
if (orig == null) {
116116
orig = ValuesSource.Numeric.EMPTY;
117117
}

server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/TermsValuesSourceBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public String type() {
7171

7272
@Override
7373
protected CompositeValuesSourceConfig innerBuild(QueryShardContext queryShardContext, ValuesSourceConfig config) throws IOException {
74-
ValuesSource vs = config.toValuesSource(queryShardContext);
74+
ValuesSource vs = config.toValuesSource();
7575
if (vs == null) {
7676
// The field is unmapped so we use a value source that can parse any type of values.
7777
// This is needed because the after values are parsed even when there are no values to process.

server/src/main/java/org/elasticsearch/search/aggregations/support/MultiValuesSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public NumericMultiValuesSource(Map<String, ValuesSourceConfig> valuesSourceConf
3939
QueryShardContext context) {
4040
values = new HashMap<>(valuesSourceConfigs.size());
4141
for (Map.Entry<String, ValuesSourceConfig> entry : valuesSourceConfigs.entrySet()) {
42-
final ValuesSource valuesSource = entry.getValue().toValuesSource(context);
42+
final ValuesSource valuesSource = entry.getValue().toValuesSource();
4343
if (valuesSource instanceof ValuesSource.Numeric == false) {
4444
throw new AggregationExecutionException("ValuesSource type " + valuesSource.toString() +
4545
"is not supported for multi-valued aggregation");

server/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceAggregatorFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public ValuesSourceAggregatorFactory(String name, ValuesSourceConfig config, Que
4444
@Override
4545
public Aggregator createInternal(SearchContext searchContext, Aggregator parent, boolean collectsFromSingleBucket,
4646
List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData) throws IOException {
47-
ValuesSource vs = config.toValuesSource(queryShardContext);
47+
ValuesSource vs = config.toValuesSource();
4848
if (vs == null) {
4949
return createUnmapped(searchContext, parent, pipelineAggregators, metaData);
5050
}

0 commit comments

Comments
 (0)