From 6174e0f7c0dd47aa3b2a8c76a12386584e2e5ce3 Mon Sep 17 00:00:00 2001 From: "Kirill A. Korinsky" Date: Wed, 13 Jul 2022 15:06:15 +0200 Subject: [PATCH] Fixed NullPointerException on bulk request Java's `ArrayList.toArray()` returns provided array when collection is empty. Here is created a one-element array which contains null element. Thus, returned `BulkResponse` may contains a null element as `BulkItemResponse`. How to achieve: 1. Sent a request to `/_bulk?filter_path=took,errors` 2. call inside `BulkProcessor.Listener` a `BulkResponse.hasFailures()` --- docs/changelog/88358.yaml | 5 +++++ .../src/main/java/org/elasticsearch/action/bulk/Retry.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 docs/changelog/88358.yaml diff --git a/docs/changelog/88358.yaml b/docs/changelog/88358.yaml new file mode 100644 index 0000000000000..a3dd22bbe0a19 --- /dev/null +++ b/docs/changelog/88358.yaml @@ -0,0 +1,5 @@ +pr: 88385 +summary: Fixed NullPointerException on bulk request +area: Distributed +type: bug +issues: [] diff --git a/server/src/main/java/org/elasticsearch/action/bulk/Retry.java b/server/src/main/java/org/elasticsearch/action/bulk/Retry.java index 99864c509b51f..207b810d5422f 100644 --- a/server/src/main/java/org/elasticsearch/action/bulk/Retry.java +++ b/server/src/main/java/org/elasticsearch/action/bulk/Retry.java @@ -195,7 +195,7 @@ private void addResponses(BulkResponse response, Predicate fil private BulkResponse getAccumulatedResponse() { BulkItemResponse[] itemResponses; synchronized (responses) { - itemResponses = responses.toArray(new BulkItemResponse[1]); + itemResponses = responses.toArray(new BulkItemResponse[0]); } long stopTimestamp = System.nanoTime(); long totalLatencyMs = TimeValue.timeValueNanos(stopTimestamp - startTimestampNanos).millis();