From 3928c624a326da7b6a66462f19163e21088f7920 Mon Sep 17 00:00:00 2001 From: David Roberts Date: Fri, 14 Jun 2019 17:53:55 +0100 Subject: [PATCH] [ML] Close sample stream in post_data endpoint (#43235) A static code analysis revealed that we are not closing the input stream in the post_data endpoint. This actually makes no difference in practice, as the particular InputStream implementation in this case is org.elasticsearch.common.bytes.BytesReferenceStreamInput and its close() method is a no-op. However, it is good practice to close the stream anyway. --- .../xpack/ml/action/TransportPostDataAction.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportPostDataAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportPostDataAction.java index 2206f265a7c..28589683ffc 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportPostDataAction.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportPostDataAction.java @@ -17,6 +17,7 @@ import org.elasticsearch.xpack.ml.job.process.autodetect.AutodetectProcessManage import org.elasticsearch.xpack.ml.job.process.autodetect.params.DataLoadParams; import org.elasticsearch.xpack.ml.job.process.autodetect.params.TimeRange; +import java.io.InputStream; import java.util.Optional; public class TransportPostDataAction extends TransportJobTaskAction { @@ -37,8 +38,8 @@ public class TransportPostDataAction extends TransportJobTaskAction listener) { TimeRange timeRange = TimeRange.builder().startTime(request.getResetStart()).endTime(request.getResetEnd()).build(); DataLoadParams params = new DataLoadParams(timeRange, Optional.ofNullable(request.getDataDescription())); - try { - processManager.processData(task, analysisRegistry, request.getContent().streamInput(), request.getXContentType(), + try (InputStream contentStream = request.getContent().streamInput()) { + processManager.processData(task, analysisRegistry, contentStream, request.getXContentType(), params, (dataCounts, e) -> { if (dataCounts != null) { listener.onResponse(new PostDataAction.Response(dataCounts));