mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

abobrov
30.10.2009 165eb4e8aac72068def0ee3a53f48b1ec0b96c0d
- plug ConcurrentModificationException highlighted by nightly tests.
2 files modified
67 ■■■■■ changed files
opends/src/server/org/opends/server/backends/task/TaskBackend.java 65 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/task/TaskScheduler.java 2 ●●● patch | view | raw | blame | history
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);
    }
  }
opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -139,7 +139,7 @@
  private LinkedList<TaskThread> idleThreads;
  // The lock used to provide threadsafe access to the scheduler.
  private ReentrantLock schedulerLock;
  private final ReentrantLock schedulerLock;
  // The task backend with which this scheduler is associated.
  private TaskBackend taskBackend;