Skip to content

Commit 8de9539

Browse files
kkrik-eselasticsearchmachine
andauthored
Lazy initialization for SyntheticSourceSupport.loader() (#120896)
* Lazy initialization for `SyntheticSourceSupport.loader()` * [CI] Auto commit changes from spotless * add missing --------- Co-authored-by: elasticsearchmachine <[email protected]>
1 parent 96baac8 commit 8de9539

File tree

29 files changed

+159
-153
lines changed

29 files changed

+159
-153
lines changed

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -463,13 +463,13 @@ public MatchOnlyTextFieldType fieldType() {
463463

464464
@Override
465465
protected SyntheticSourceSupport syntheticSourceSupport() {
466-
var loader = new StringStoredFieldFieldLoader(fieldType().storedFieldNameForSyntheticSource(), fieldType().name(), leafName()) {
467-
@Override
468-
protected void write(XContentBuilder b, Object value) throws IOException {
469-
b.value((String) value);
466+
return new SyntheticSourceSupport.Native(
467+
() -> new StringStoredFieldFieldLoader(fieldType().storedFieldNameForSyntheticSource(), fieldType().name(), leafName()) {
468+
@Override
469+
protected void write(XContentBuilder b, Object value) throws IOException {
470+
b.value((String) value);
471+
}
470472
}
471-
};
472-
473-
return new SyntheticSourceSupport.Native(loader);
473+
);
474474
}
475475
}

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -707,14 +707,14 @@ public int docValueCount() {
707707
@Override
708708
protected SyntheticSourceSupport syntheticSourceSupport() {
709709
if (hasDocValues) {
710-
var loader = new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed.value()) {
711-
@Override
712-
protected void writeValue(XContentBuilder b, long value) throws IOException {
713-
b.value(decodeForSyntheticSource(value, scalingFactor));
710+
return new SyntheticSourceSupport.Native(
711+
() -> new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed.value()) {
712+
@Override
713+
protected void writeValue(XContentBuilder b, long value) throws IOException {
714+
b.value(decodeForSyntheticSource(value, scalingFactor));
715+
}
714716
}
715-
};
716-
717-
return new SyntheticSourceSupport.Native(loader);
717+
);
718718
}
719719

720720
return super.syntheticSourceSupport();

plugins/mapper-annotated-text/src/main/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldMapper.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -560,19 +560,17 @@ public FieldMapper.Builder getMergeBuilder() {
560560
@Override
561561
protected SyntheticSourceSupport syntheticSourceSupport() {
562562
if (fieldType.stored()) {
563-
var loader = new StringStoredFieldFieldLoader(fullPath(), leafName()) {
563+
return new SyntheticSourceSupport.Native(() -> new StringStoredFieldFieldLoader(fullPath(), leafName()) {
564564
@Override
565565
protected void write(XContentBuilder b, Object value) throws IOException {
566566
b.value((String) value);
567567
}
568-
};
569-
570-
return new SyntheticSourceSupport.Native(loader);
568+
});
571569
}
572570

573571
var kwd = TextFieldMapper.SyntheticSourceHelper.getKeywordFieldMapperForSyntheticSource(this);
574572
if (kwd != null) {
575-
return new SyntheticSourceSupport.Native(kwd.syntheticFieldLoader(fullPath(), leafName()));
573+
return new SyntheticSourceSupport.Native(() -> kwd.syntheticFieldLoader(fullPath(), leafName()));
576574
}
577575

578576
return super.syntheticSourceSupport();

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ protected String contentType() {
195195
@Override
196196
protected SyntheticSourceSupport syntheticSourceSupport() {
197197
if (hasDocValues) {
198-
var loader = new BinaryDocValuesSyntheticFieldLoader(fullPath()) {
198+
return new SyntheticSourceSupport.Native(() -> new BinaryDocValuesSyntheticFieldLoader(fullPath()) {
199199
@Override
200200
protected void writeValue(XContentBuilder b, BytesRef value) throws IOException {
201201
var in = new ByteArrayStreamInput();
@@ -221,9 +221,7 @@ protected void writeValue(XContentBuilder b, BytesRef value) throws IOException
221221
b.endArray();
222222
}
223223
}
224-
};
225-
226-
return new SyntheticSourceSupport.Native(loader);
224+
});
227225
}
228226

229227
return super.syntheticSourceSupport();

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -546,14 +546,14 @@ protected String contentType() {
546546
@Override
547547
protected SyntheticSourceSupport syntheticSourceSupport() {
548548
if (hasDocValues) {
549-
var loader = new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed.value()) {
550-
@Override
551-
protected void writeValue(XContentBuilder b, long value) throws IOException {
552-
b.value(value == 1);
549+
return new SyntheticSourceSupport.Native(
550+
() -> new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed.value()) {
551+
@Override
552+
protected void writeValue(XContentBuilder b, long value) throws IOException {
553+
b.value(value == 1);
554+
}
553555
}
554-
};
555-
556-
return new SyntheticSourceSupport.Native(loader);
556+
);
557557
}
558558

559559
return super.syntheticSourceSupport();

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,14 +1011,14 @@ public Long getNullValue() {
10111011
@Override
10121012
protected SyntheticSourceSupport syntheticSourceSupport() {
10131013
if (hasDocValues) {
1014-
var loader = new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed) {
1015-
@Override
1016-
protected void writeValue(XContentBuilder b, long value) throws IOException {
1017-
b.value(fieldType().format(value, fieldType().dateTimeFormatter()));
1014+
return new SyntheticSourceSupport.Native(
1015+
() -> new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed) {
1016+
@Override
1017+
protected void writeValue(XContentBuilder b, long value) throws IOException {
1018+
b.value(fieldType().format(value, fieldType().dateTimeFormatter()));
1019+
}
10181020
}
1019-
};
1020-
1021-
return new SyntheticSourceSupport.Native(loader);
1021+
);
10221022
}
10231023

10241024
return super.syntheticSourceSupport();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public static IndexableField field(int count) {
128128

129129
@Override
130130
protected SyntheticSourceSupport syntheticSourceSupport() {
131-
return new SyntheticSourceSupport.Native(new SyntheticFieldLoader());
131+
return new SyntheticSourceSupport.Native(SyntheticFieldLoader::new);
132132
}
133133

134134
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ protected String contentType() {
10231023
protected SyntheticSourceSupport syntheticSourceSupport() {
10241024
// Opt out of fallback synthetic source implementation
10251025
// since there is custom logic in #parseCreateField().
1026-
return new SyntheticSourceSupport.Native(SourceLoader.SyntheticFieldLoader.NOTHING);
1026+
return new SyntheticSourceSupport.Native(() -> SourceLoader.SyntheticFieldLoader.NOTHING);
10271027
}
10281028
};
10291029
}

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,11 +560,27 @@ public SourceLoader.SyntheticFieldLoader loader() {
560560

561561
SyntheticSourceSupport FALLBACK = new Fallback();
562562

563-
record Native(SourceLoader.SyntheticFieldLoader loader) implements SyntheticSourceSupport {
563+
final class Native implements SyntheticSourceSupport {
564+
Supplier<SourceLoader.SyntheticFieldLoader> loaderSupplier;
565+
private SourceLoader.SyntheticFieldLoader loader;
566+
567+
@SuppressWarnings("checkstyle:RedundantModifier")
568+
public Native(Supplier<SourceLoader.SyntheticFieldLoader> loaderSupplier) {
569+
this.loaderSupplier = loaderSupplier;
570+
}
571+
564572
@Override
565573
public SyntheticSourceMode mode() {
566574
return SyntheticSourceMode.NATIVE;
567575
}
576+
577+
@Override
578+
public SourceLoader.SyntheticFieldLoader loader() {
579+
if (loader == null) {
580+
loader = loaderSupplier.get();
581+
}
582+
return loader;
583+
}
568584
}
569585

570586
SyntheticSourceMode mode();

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -619,17 +619,17 @@ protected void onMalformedValue(DocumentParserContext context, XContentBuilder m
619619
@Override
620620
protected SyntheticSourceSupport syntheticSourceSupport() {
621621
if (fieldType().hasDocValues()) {
622-
var loader = new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed()) {
623-
final GeoPoint point = new GeoPoint();
624-
625-
@Override
626-
protected void writeValue(XContentBuilder b, long value) throws IOException {
627-
point.reset(GeoEncodingUtils.decodeLatitude((int) (value >>> 32)), GeoEncodingUtils.decodeLongitude((int) value));
628-
point.toXContent(b, ToXContent.EMPTY_PARAMS);
622+
return new SyntheticSourceSupport.Native(
623+
() -> new SortedNumericDocValuesSyntheticFieldLoader(fullPath(), leafName(), ignoreMalformed()) {
624+
final GeoPoint point = new GeoPoint();
625+
626+
@Override
627+
protected void writeValue(XContentBuilder b, long value) throws IOException {
628+
point.reset(GeoEncodingUtils.decodeLatitude((int) (value >>> 32)), GeoEncodingUtils.decodeLongitude((int) value));
629+
point.toXContent(b, ToXContent.EMPTY_PARAMS);
630+
}
629631
}
630-
};
631-
632-
return new SyntheticSourceSupport.Native(loader);
632+
);
633633
}
634634

635635
return super.syntheticSourceSupport();

0 commit comments

Comments
 (0)