Skip to content

Commit c082c25

Browse files
Fix NumberFieldMapper Referencing its Own Builder (#77131)
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 27062e5 commit c082c25

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
@@ -81,7 +81,7 @@ public static class Builder extends FieldMapper.Builder {
8181

8282
private final Parameter<Number> nullValue;
8383

84-
private final Parameter<Script> script = Parameter.scriptParam(m -> toType(m).builder.script.get());
84+
private final Parameter<Script> script = Parameter.scriptParam(m -> toType(m).script);
8585
private final Parameter<String> onScriptError = Parameter.onScriptErrorParam(m -> toType(m).onScriptError, script);
8686
private final Parameter<Boolean> dimension;
8787

@@ -1084,7 +1084,6 @@ public boolean isDimension() {
10841084
}
10851085
}
10861086

1087-
private final Builder builder;
10881087
private final NumberType type;
10891088

10901089
private final boolean indexed;
@@ -1097,6 +1096,8 @@ public boolean isDimension() {
10971096
private final boolean ignoreMalformedByDefault;
10981097
private final boolean coerceByDefault;
10991098
private final boolean dimension;
1099+
private final ScriptCompiler scriptCompiler;
1100+
private final Script script;
11001101

11011102
private NumberFieldMapper(
11021103
String simpleName,
@@ -1116,7 +1117,8 @@ private NumberFieldMapper(
11161117
this.coerceByDefault = builder.coerce.getDefaultValue().value();
11171118
this.scriptValues = builder.scriptValues();
11181119
this.dimension = builder.dimension.getValue();
1119-
this.builder = builder;
1120+
this.scriptCompiler = builder.scriptCompiler;
1121+
this.script = builder.script.getValue();
11201122
}
11211123

11221124
boolean coerce() {
@@ -1203,7 +1205,7 @@ protected void indexScriptValues(SearchLookup searchLookup, LeafReaderContext re
12031205

12041206
@Override
12051207
public FieldMapper.Builder getMergeBuilder() {
1206-
return new Builder(simpleName(), type, builder.scriptCompiler, ignoreMalformedByDefault, coerceByDefault)
1208+
return new Builder(simpleName(), type, scriptCompiler, ignoreMalformedByDefault, coerceByDefault)
12071209
.dimension(dimension).init(this);
12081210
}
12091211
}

0 commit comments

Comments
 (0)