Trim to size lists created in source fetchers (#130521)

This commit trim to size those lists to prevent wasteful heap usage.
This commit is contained in:
Ignacio Vera 2025-07-04 07:21:24 +01:00 committed by GitHub
parent 9be73c58c6
commit bc0296456c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 11 additions and 3 deletions

View File

@ -0,0 +1,5 @@
pr: 130521
summary: Trim to size lists created in source fetchers
area: Search
type: bug
issues: []

View File

@ -56,7 +56,7 @@ public abstract class ArraySourceValueFetcher implements ValueFetcher {
@Override
public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValues) {
List<Object> values = new ArrayList<>();
ArrayList<Object> values = new ArrayList<>();
for (String path : sourcePaths) {
Object sourceValue = source.extractValue(path, nullValue);
if (sourceValue == null) {
@ -70,6 +70,7 @@ public abstract class ArraySourceValueFetcher implements ValueFetcher {
ignoredValues.add(sourceValue);
}
}
values.trimToSize();
return values;
}

View File

@ -42,7 +42,7 @@ public class NestedValueFetcher implements ValueFetcher {
@Override
public List<Object> fetchValues(Source source, int doc, List<Object> includedValues) throws IOException {
List<Object> nestedEntriesToReturn = new ArrayList<>();
ArrayList<Object> nestedEntriesToReturn = new ArrayList<>();
Map<String, Object> filteredSource = new HashMap<>();
Map<String, Object> stub = createSourceMapStub(filteredSource);
List<?> nestedValues = XContentMapValues.extractNestedSources(nestedFieldPath, source.source());
@ -69,6 +69,7 @@ public class NestedValueFetcher implements ValueFetcher {
nestedEntriesToReturn.add(nestedEntry);
}
}
nestedEntriesToReturn.trimToSize();
return nestedEntriesToReturn;
}

View File

@ -55,7 +55,7 @@ public abstract class SourceValueFetcher implements ValueFetcher {
@Override
public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValues) {
List<Object> values = new ArrayList<>();
ArrayList<Object> values = new ArrayList<>();
for (String path : sourcePaths) {
Object sourceValue = source.extractValue(path, nullValue);
if (sourceValue == null) {
@ -92,6 +92,7 @@ public abstract class SourceValueFetcher implements ValueFetcher {
}
}
}
values.trimToSize();
return values;
}