Skip to content

Commit bc02964

Browse files
authored
Trim to size lists created in source fetchers (#130521)
This commit trim to size those lists to prevent wasteful heap usage.
1 parent 9be73c5 commit bc02964

File tree

4 files changed

+11
-3
lines changed

4 files changed

+11
-3
lines changed

docs/changelog/130521.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 130521
2+
summary: Trim to size lists created in source fetchers
3+
area: Search
4+
type: bug
5+
issues: []

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public ArraySourceValueFetcher(Set<String> sourcePaths, Object nullValue) {
5656

5757
@Override
5858
public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValues) {
59-
List<Object> values = new ArrayList<>();
59+
ArrayList<Object> values = new ArrayList<>();
6060
for (String path : sourcePaths) {
6161
Object sourceValue = source.extractValue(path, nullValue);
6262
if (sourceValue == null) {
@@ -70,6 +70,7 @@ public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValu
7070
ignoredValues.add(sourceValue);
7171
}
7272
}
73+
values.trimToSize();
7374
return values;
7475
}
7576

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public NestedValueFetcher(String nestedField, FieldFetcher nestedFieldFetcher) {
4242

4343
@Override
4444
public List<Object> fetchValues(Source source, int doc, List<Object> includedValues) throws IOException {
45-
List<Object> nestedEntriesToReturn = new ArrayList<>();
45+
ArrayList<Object> nestedEntriesToReturn = new ArrayList<>();
4646
Map<String, Object> filteredSource = new HashMap<>();
4747
Map<String, Object> stub = createSourceMapStub(filteredSource);
4848
List<?> nestedValues = XContentMapValues.extractNestedSources(nestedFieldPath, source.source());
@@ -69,6 +69,7 @@ public List<Object> fetchValues(Source source, int doc, List<Object> includedVal
6969
nestedEntriesToReturn.add(nestedEntry);
7070
}
7171
}
72+
nestedEntriesToReturn.trimToSize();
7273
return nestedEntriesToReturn;
7374
}
7475

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public SourceValueFetcher(Set<String> sourcePaths, Object nullValue) {
5555

5656
@Override
5757
public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValues) {
58-
List<Object> values = new ArrayList<>();
58+
ArrayList<Object> values = new ArrayList<>();
5959
for (String path : sourcePaths) {
6060
Object sourceValue = source.extractValue(path, nullValue);
6161
if (sourceValue == null) {
@@ -92,6 +92,7 @@ public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValu
9292
}
9393
}
9494
}
95+
values.trimToSize();
9596
return values;
9697
}
9798

0 commit comments

Comments
 (0)