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:
parent
9be73c58c6
commit
bc0296456c
|
@ -0,0 +1,5 @@
|
||||||
|
pr: 130521
|
||||||
|
summary: Trim to size lists created in source fetchers
|
||||||
|
area: Search
|
||||||
|
type: bug
|
||||||
|
issues: []
|
|
@ -56,7 +56,7 @@ public abstract class ArraySourceValueFetcher implements ValueFetcher {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValues) {
|
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) {
|
for (String path : sourcePaths) {
|
||||||
Object sourceValue = source.extractValue(path, nullValue);
|
Object sourceValue = source.extractValue(path, nullValue);
|
||||||
if (sourceValue == null) {
|
if (sourceValue == null) {
|
||||||
|
@ -70,6 +70,7 @@ public abstract class ArraySourceValueFetcher implements ValueFetcher {
|
||||||
ignoredValues.add(sourceValue);
|
ignoredValues.add(sourceValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
values.trimToSize();
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class NestedValueFetcher implements ValueFetcher {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Object> fetchValues(Source source, int doc, List<Object> includedValues) throws IOException {
|
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> filteredSource = new HashMap<>();
|
||||||
Map<String, Object> stub = createSourceMapStub(filteredSource);
|
Map<String, Object> stub = createSourceMapStub(filteredSource);
|
||||||
List<?> nestedValues = XContentMapValues.extractNestedSources(nestedFieldPath, source.source());
|
List<?> nestedValues = XContentMapValues.extractNestedSources(nestedFieldPath, source.source());
|
||||||
|
@ -69,6 +69,7 @@ public class NestedValueFetcher implements ValueFetcher {
|
||||||
nestedEntriesToReturn.add(nestedEntry);
|
nestedEntriesToReturn.add(nestedEntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
nestedEntriesToReturn.trimToSize();
|
||||||
return nestedEntriesToReturn;
|
return nestedEntriesToReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ public abstract class SourceValueFetcher implements ValueFetcher {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValues) {
|
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) {
|
for (String path : sourcePaths) {
|
||||||
Object sourceValue = source.extractValue(path, nullValue);
|
Object sourceValue = source.extractValue(path, nullValue);
|
||||||
if (sourceValue == null) {
|
if (sourceValue == null) {
|
||||||
|
@ -92,6 +92,7 @@ public abstract class SourceValueFetcher implements ValueFetcher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
values.trimToSize();
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue