From 165eb4e8aac72068def0ee3a53f48b1ec0b96c0d Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Thu, 30 Apr 2009 15:10:47 +0000
Subject: [PATCH] - plug ConcurrentModificationException highlighted by nightly tests.
---
opends/src/server/org/opends/server/backends/task/TaskBackend.java | 65 ++++++++++++++++++--------------
1 files changed, 37 insertions(+), 28 deletions(-)
diff --git a/opends/src/server/org/opends/server/backends/task/TaskBackend.java b/opends/src/server/org/opends/server/backends/task/TaskBackend.java
index d00a78d..c2eba38 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskBackend.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2008 Sun Microsystems, Inc.
+ * Copyright 2006-2009 Sun Microsystems, Inc.
*/
package org.opends.server.backends.task;
@@ -521,38 +521,47 @@
return null;
}
- if (entryDN.equals(taskRootDN))
- {
- return taskScheduler.getTaskRootEntry();
- }
- else if (entryDN.equals(scheduledTaskParentDN))
- {
- return taskScheduler.getScheduledTaskParentEntry();
- }
- else if (entryDN.equals(recurringTaskParentDN))
- {
- return taskScheduler.getRecurringTaskParentEntry();
- }
+ Lock lock = taskScheduler.readLockEntry(entryDN);
- DN parentDN = entryDN.getParentDNInSuffix();
- if (parentDN == null)
+ try
{
- return null;
- }
+ if (entryDN.equals(taskRootDN))
+ {
+ return taskScheduler.getTaskRootEntry();
+ }
+ else if (entryDN.equals(scheduledTaskParentDN))
+ {
+ return taskScheduler.getScheduledTaskParentEntry();
+ }
+ else if (entryDN.equals(recurringTaskParentDN))
+ {
+ return taskScheduler.getRecurringTaskParentEntry();
+ }
- if (parentDN.equals(scheduledTaskParentDN))
- {
- return taskScheduler.getScheduledTaskEntry(entryDN);
+ DN parentDN = entryDN.getParentDNInSuffix();
+ if (parentDN == null)
+ {
+ return null;
+ }
+
+ if (parentDN.equals(scheduledTaskParentDN))
+ {
+ return taskScheduler.getScheduledTaskEntry(entryDN);
+ }
+ else if (parentDN.equals(recurringTaskParentDN))
+ {
+ return taskScheduler.getRecurringTaskEntry(entryDN);
+ }
+ else
+ {
+ // If we've gotten here then this is not an entry
+ // that should exist in the task backend.
+ return null;
+ }
}
- else if (parentDN.equals(recurringTaskParentDN))
+ finally
{
- return taskScheduler.getRecurringTaskEntry(entryDN);
- }
- else
- {
- // If we've gotten here then this is not an entry that should exist in the
- // task backend.
- return null;
+ taskScheduler.unlockEntry(entryDN, lock);
}
}
--
Gitblit v1.10.0