From bccb9d032dd8123b45b9611ebee6fd6875b13d26 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Thu, 7 Feb 2019 13:19:02 +0100 Subject: [PATCH] Remove task only if in CLOSED state (MID-5033) It looks like that when re-scheduling already closed single-run tasks they keep their completionTimestamp set. And so they are eventually cleaned up. This is an immediate fix, requiring tasks that are to be cleaned to have also execution status = CLOSED. See also MID-5133. --- .../midpoint/task/quartzimpl/TaskManagerQuartzImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java index 187b0a1a121..c17355f9422 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java @@ -2151,7 +2151,8 @@ public void cleanupTasks(CleanupPolicyType policy, Task executionTask, Operation List> obsoleteTasks; try { ObjectQuery obsoleteTasksQuery = prismContext.queryFor(TaskType.class) - .item(TaskType.F_COMPLETION_TIMESTAMP).le(timeXml) + .item(TaskType.F_EXECUTION_STATUS).eq(TaskExecutionStatusType.CLOSED) + .and().item(TaskType.F_COMPLETION_TIMESTAMP).le(timeXml) .and().item(TaskType.F_PARENT).isNull() .build(); obsoleteTasks = repositoryService.searchObjects(TaskType.class, obsoleteTasksQuery, null, result);