From 089ab3277905f281ae03dd691da8eb90fec35c15 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 d8cc66f4a1e..b1eb2b141f3 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 @@ -1802,7 +1802,8 @@ public void cleanupTasks(CleanupPolicyType policy, Task executionTask, Operation List> obsoleteTasks; try { ObjectQuery obsoleteTasksQuery = QueryBuilder.queryFor(TaskType.class, prismContext) - .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);