From dbcc567a8fea9b5ef07fcad588e8268f3a23f9d4 Mon Sep 17 00:00:00 2001 From: Trevor Gerhardt Date: Tue, 30 May 2023 16:46:06 +0800 Subject: [PATCH] Fix an NPE when task does not exist (#880) Handle the case when `taskScheduler.getTaskForUser` returns `null` so that we to prevent `NullPointerException`s. --- .../conveyal/analysis/controllers/UserActivityController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/conveyal/analysis/controllers/UserActivityController.java b/src/main/java/com/conveyal/analysis/controllers/UserActivityController.java index c2beffd30..83b6f5389 100644 --- a/src/main/java/com/conveyal/analysis/controllers/UserActivityController.java +++ b/src/main/java/com/conveyal/analysis/controllers/UserActivityController.java @@ -58,6 +58,10 @@ private Object removeActivity (Request req, Response res) { UserPermissions userPermissions = UserPermissions.from(req); String id = req.params("id"); Task task = taskScheduler.getTaskForUser(userPermissions.email, id); + // Check if task still exists before attempting to remove. + if (task == null) { + throw AnalysisServerException.notFound("Task does not exist. It may have already been removed by another user."); + } // Disallow removing active tasks via the API. if (task.state.equals(Task.State.ACTIVE)) { throw AnalysisServerException.badRequest("Cannot clear an active task.");