From 91c9fb8ba3e0de5f63ab891baf936b801a7aa949 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 05 Jul 2010 12:12:23 +0000
Subject: [PATCH] Fix for issue #4572. The duplicated recurring tasks were due to milliseconds date differences between iterations.

---
 opends/src/server/org/opends/server/backends/task/TaskScheduler.java |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)

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 6a8874d..061e275 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2009 Sun Microsystems, Inc.
+ *      Copyright 2006-2010 Sun Microsystems, Inc.
  */
 package org.opends.server.backends.task;
 
@@ -671,19 +671,25 @@
           }
           catch (DirectoryException de)
           {
-            if (debugEnabled())
+            // This task might have been already scheduled from before
+            // and thus got initialized from backing file, otherwise
+            // log error and continue.
+            if (de.getResultCode() != ResultCode.ENTRY_ALREADY_EXISTS)
             {
-              TRACER.debugCaught(DebugLogLevel.ERROR, de);
+              if (debugEnabled())
+              {
+                TRACER.debugCaught(DebugLogLevel.ERROR, de);
+              }
+
+              Message message =
+                  ERR_TASKSCHED_ERROR_SCHEDULING_RECURRING_ITERATION.
+                    get(recurringTaskID, de.getMessageObject());
+              logError(message);
+
+              DirectoryServer.sendAlertNotification(this,
+                   ALERT_TYPE_CANNOT_SCHEDULE_RECURRING_ITERATION,
+                      message);
             }
-
-            Message message =
-                ERR_TASKSCHED_ERROR_SCHEDULING_RECURRING_ITERATION.
-                  get(recurringTaskID, de.getMessageObject());
-            logError(message);
-
-            DirectoryServer.sendAlertNotification(this,
-                 ALERT_TYPE_CANNOT_SCHEDULE_RECURRING_ITERATION,
-                    message);
           }
         }
       }

--
Gitblit v1.10.0