From 9d12a3dacc94f69343093b4f398b93a83efbdc00 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 17 Sep 2010 22:54:59 +0000
Subject: [PATCH] Make sure completed tasks retention limit is respected upon server restarts.

---
 opends/src/messages/messages/backend.properties                      |    2 ++
 opends/src/server/org/opends/server/backends/task/TaskScheduler.java |   14 +++++++++++++-
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/opends/src/messages/messages/backend.properties b/opends/src/messages/messages/backend.properties
index 31c2177..b20b339 100644
--- a/opends/src/messages/messages/backend.properties
+++ b/opends/src/messages/messages/backend.properties
@@ -410,6 +410,8 @@
  the same ID
 SEVERE_ERR_TASKSCHED_DUPLICATE_TASK_ID_134=Unable to schedule task %s because \
  another task already exists with the same ID
+MILD_WARN_TASKSCHED_DUPLICATE_TASK_ID_135=Unable to add completed task %s to \
+ the task scheduler because another task already exists with the same ID
 SEVERE_ERR_TASKSCHED_ERROR_SCHEDULING_RECURRING_ITERATION_136=An error \
  occurred while attempting to schedule the next iteration of recurring task \
  %s:  %s
diff --git a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
index 061e275..d230e19 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -1170,7 +1170,19 @@
               Task task = entryToScheduledTask(entry, null);
               if (TaskState.isDone(task.getTaskState()))
               {
-                completedTasks.add(task);
+                String id = task.getTaskID();
+                if (tasks.containsKey(id))
+                {
+                  Message message =
+                      WARN_TASKSCHED_DUPLICATE_TASK_ID.get(
+                      String.valueOf(id));
+                  logError(message);
+                }
+                else
+                {
+                  completedTasks.add(task);
+                  tasks.put(id, task);
+                }
               }
               else
               {

--
Gitblit v1.10.0