Skip to content

Commit 841d2ca

Browse files
Fix NumberFieldMapper Referencing its Own Builder (#77131) (#77168)
Investigating the heap use of mapper instances I found this. It seems quite a bit of overhead for these instances goes into the builder field. In other mappers we retain the script service and the script outright, so I did the same thing here to make these instances a little smaller.
1 parent 6ea1051 commit 841d2ca

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public static class Builder extends FieldMapper.Builder {
8080

8181
private final Parameter<Number> nullValue;
8282

83-
private final Parameter<Script> script = Parameter.scriptParam(m -> toType(m).builder.script.get());
83+
private final Parameter<Script> script = Parameter.scriptParam(m -> toType(m).script);
8484
private final Parameter<String> onScriptError = Parameter.onScriptErrorParam(m -> toType(m).onScriptError, script);
8585

8686
private final Parameter<Map<String, String>> meta = Parameter.metaParam();
@@ -1065,7 +1065,6 @@ public CollapseType collapseType() {
10651065
}
10661066
}
10671067

1068-
private final Builder builder;
10691068
private final NumberType type;
10701069

10711070
private final boolean indexed;
@@ -1077,6 +1076,8 @@ public CollapseType collapseType() {
10771076
private final FieldValues<Number> scriptValues;
10781077
private final boolean ignoreMalformedByDefault;
10791078
private final boolean coerceByDefault;
1079+
private final ScriptCompiler scriptCompiler;
1080+
private final Script script;
10801081

10811082
private NumberFieldMapper(
10821083
String simpleName,
@@ -1095,7 +1096,8 @@ private NumberFieldMapper(
10951096
this.ignoreMalformedByDefault = builder.ignoreMalformed.getDefaultValue().value();
10961097
this.coerceByDefault = builder.coerce.getDefaultValue().value();
10971098
this.scriptValues = builder.scriptValues();
1098-
this.builder = builder;
1099+
this.scriptCompiler = builder.scriptCompiler;
1100+
this.script = builder.script.getValue();
10991101
}
11001102

11011103
boolean coerce() {
@@ -1170,6 +1172,6 @@ protected void indexScriptValues(SearchLookup searchLookup, LeafReaderContext re
11701172

11711173
@Override
11721174
public FieldMapper.Builder getMergeBuilder() {
1173-
return new Builder(simpleName(), type, builder.scriptCompiler, ignoreMalformedByDefault, coerceByDefault).init(this);
1175+
return new Builder(simpleName(), type, scriptCompiler, ignoreMalformedByDefault, coerceByDefault).init(this);
11741176
}
11751177
}

0 commit comments

Comments
 (0)