diff --git a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java index 080a0fdaa986..c324b49e13a2 100644 --- a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java +++ b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java @@ -443,11 +443,17 @@ public Collection getPendingTasks() @Override public TaskLocation getTaskLocation(String taskId) { - final KubernetesWorkItem workItem = tasks.get(taskId); - if (workItem == null) { + try { + final KubernetesWorkItem workItem = tasks.get(taskId); + if (workItem == null) { + return TaskLocation.unknown(); + } else { + return workItem.getLocation(); + } + } + catch (Exception e) { + log.warn("Unable to find location for task [%s]", taskId); return TaskLocation.unknown(); - } else { - return workItem.getLocation(); } } diff --git a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java index 391db70afb28..67a5278c6a32 100644 --- a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java +++ b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java @@ -654,6 +654,24 @@ public TaskLocation getLocation() Assert.assertEquals(TaskLocation.create("host", 0, 1, false), taskLocation); } + @Test + public void test_getTaskLocation_throws() + { + KubernetesWorkItem workItem = new KubernetesWorkItem(task, null) + { + @Override + public TaskLocation getLocation() + { + throw new RuntimeException(); + } + }; + + runner.tasks.put(task.getId(), workItem); + + TaskLocation taskLocation = runner.getTaskLocation(task.getId()); + Assert.assertEquals(TaskLocation.unknown(), taskLocation); + } + @Test public void test_getTaskLocation_noTaskFound() {