From b92dd83c44e42a1bf76c7aed9a95f8038f6330e0 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Mon, 23 May 2022 11:15:16 -0400 Subject: [PATCH] DBZ-5159 Fix possible NPE when checking connector task state --- .../testing/testcontainers/DebeziumContainer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/debezium-testing/debezium-testing-testcontainers/src/main/java/io/debezium/testing/testcontainers/DebeziumContainer.java b/debezium-testing/debezium-testing-testcontainers/src/main/java/io/debezium/testing/testcontainers/DebeziumContainer.java index 27990654a..558057302 100644 --- a/debezium-testing/debezium-testing-testcontainers/src/main/java/io/debezium/testing/testcontainers/DebeziumContainer.java +++ b/debezium-testing/debezium-testing-testcontainers/src/main/java/io/debezium/testing/testcontainers/DebeziumContainer.java @@ -23,6 +23,7 @@ import org.testcontainers.utility.DockerImageName; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -300,7 +301,12 @@ public Connector.State getConnectorTaskState(String connectorName, int taskNumbe try (final ResponseBody responseBody = executeGETRequestSuccessfully(request).body()) { if (null != responseBody) { final ObjectNode parsedObject = (ObjectNode) MAPPER.readTree(responseBody.string()); - return Connector.State.valueOf(parsedObject.get("tasks").get(taskNumber).get("state").asText()); + final JsonNode tasksNode = parsedObject.get("tasks").get(taskNumber); + // Task array can return null if the array is empty or the task number is not within bounds + if (tasksNode == null) { + return null; + } + return Connector.State.valueOf(tasksNode.get("state").asText()); } return null; }