diff --git a/server/src/main/java/org/elasticsearch/index/mapper/FallbackSyntheticSourceBlockLoader.java b/server/src/main/java/org/elasticsearch/index/mapper/FallbackSyntheticSourceBlockLoader.java index db63a4443f847..c709c891e4ad4 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/FallbackSyntheticSourceBlockLoader.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/FallbackSyntheticSourceBlockLoader.java @@ -70,19 +70,16 @@ public SortedSetDocValues ordinals(LeafReaderContext context) throws IOException throw new UnsupportedOperationException(); } - private record IgnoredSourceRowStrideReader(String fieldName, Reader reader) implements RowStrideReader { - @Override - public void read(int docId, StoredFields storedFields, Builder builder) throws IOException { - var ignoredSource = storedFields.storedFields().get(IgnoredSourceFieldMapper.NAME); - if (ignoredSource == null) { - builder.appendNull(); - return; - } - - Map> valuesForFieldAndParents = new HashMap<>(); - - // Contains name of the field and all its parents - Set fieldNames = new HashSet<>() { + private static class IgnoredSourceRowStrideReader implements RowStrideReader { + // Contains name of the field and all its parents + private final Set fieldNames; + private final String fieldName; + private final Reader reader; + + IgnoredSourceRowStrideReader(String fieldName, Reader reader) { + this.fieldName = fieldName; + this.reader = reader; + this.fieldNames = new HashSet<>() { { add("_doc"); } @@ -97,6 +94,18 @@ public void read(int docId, StoredFields storedFields, Builder builder) throws I fieldNames.add(current.toString()); } + } + + @Override + public void read(int docId, StoredFields storedFields, Builder builder) throws IOException { + var ignoredSource = storedFields.storedFields().get(IgnoredSourceFieldMapper.NAME); + if (ignoredSource == null) { + builder.appendNull(); + return; + } + + Map> valuesForFieldAndParents = new HashMap<>(); + for (Object value : ignoredSource) { IgnoredSourceFieldMapper.NameValue nameValue = IgnoredSourceFieldMapper.decode(value); if (fieldNames.contains(nameValue.name())) {