From a5789e69cf5ecfff3234af5b81dfd5fc3de6d1e3 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 16 Apr 2015 14:49:54 +0000
Subject: [PATCH] CR-6653 OPENDJ-1878: re-implemented LockManager to support sub-tree write locking
---
opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java | 52 +++++++++++++++++++++-------------------------------
1 files changed, 21 insertions(+), 31 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
index ae70be2..6fdd5c3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
@@ -36,7 +36,6 @@
import java.util.List;
import java.util.TimeZone;
import java.util.UUID;
-import java.util.concurrent.locks.Lock;
import javax.mail.MessagingException;
@@ -47,6 +46,7 @@
import org.opends.messages.Severity;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.*;
+import org.opends.server.types.LockManager.DNLock;
import org.opends.server.util.EMailMessage;
import org.opends.server.util.StaticUtils;
import org.opends.server.util.TimeThread;
@@ -583,13 +583,11 @@
{
// We only need to grab the entry-level lock if we don't already hold the
// broader scheduler lock.
- boolean needLock = (! taskScheduler.holdsSchedulerLock());
- Lock lock = null;
- if (needLock)
+ DNLock lock = null;
+ if (!taskScheduler.holdsSchedulerLock())
{
lock = taskScheduler.writeLockEntry(taskEntryDN);
}
-
try
{
this.taskState = taskState;
@@ -601,9 +599,9 @@
}
finally
{
- if (needLock)
+ if (lock != null)
{
- taskScheduler.unlockEntry(taskEntryDN, lock);
+ lock.unlock();
}
}
}
@@ -675,13 +673,11 @@
{
// We only need to grab the entry-level lock if we don't already hold the
// broader scheduler lock.
- boolean needLock = (! taskScheduler.holdsSchedulerLock());
- Lock lock = null;
- if (needLock)
+ DNLock lock = null;
+ if (!taskScheduler.holdsSchedulerLock())
{
lock = taskScheduler.writeLockEntry(taskEntryDN);
}
-
try
{
Entry taskEntry = getTaskEntry();
@@ -694,9 +690,9 @@
}
finally
{
- if (needLock)
+ if (lock != null)
{
- taskScheduler.unlockEntry(taskEntryDN, lock);
+ lock.unlock();
}
}
}
@@ -744,13 +740,11 @@
{
// We only need to grab the entry-level lock if we don't already hold the
// broader scheduler lock.
- boolean needLock = (! taskScheduler.holdsSchedulerLock());
- Lock lock = null;
- if (needLock)
+ DNLock lock = null;
+ if (!taskScheduler.holdsSchedulerLock())
{
lock = taskScheduler.writeLockEntry(taskEntryDN);
}
-
try
{
this.actualStartTime = actualStartTime;
@@ -764,9 +758,9 @@
}
finally
{
- if (needLock)
+ if (lock != null)
{
- taskScheduler.unlockEntry(taskEntryDN, lock);
+ lock.unlock();
}
}
}
@@ -800,13 +794,11 @@
{
// We only need to grab the entry-level lock if we don't already hold the
// broader scheduler lock.
- boolean needLock = (! taskScheduler.holdsSchedulerLock());
- Lock lock = null;
- if (needLock)
+ DNLock lock = null;
+ if (!taskScheduler.holdsSchedulerLock())
{
lock = taskScheduler.writeLockEntry(taskEntryDN);
}
-
try
{
this.completionTime = completionTime;
@@ -822,9 +814,9 @@
}
finally
{
- if (needLock)
+ if (lock != null)
{
- taskScheduler.unlockEntry(taskEntryDN, lock);
+ lock.unlock();
}
}
}
@@ -946,13 +938,11 @@
// We only need to grab the entry-level lock if we don't already hold the
// broader scheduler lock.
- boolean needLock = (! taskScheduler.holdsSchedulerLock());
- Lock lock = null;
- if (needLock)
+ DNLock lock = null;
+ if (!taskScheduler.holdsSchedulerLock())
{
lock = taskScheduler.writeLockEntry(taskEntryDN);
}
-
try
{
StringBuilder buffer = new StringBuilder();
@@ -1008,9 +998,9 @@
}
finally
{
- if (needLock)
+ if (lock != null)
{
- taskScheduler.unlockEntry(taskEntryDN, lock);
+ lock.unlock();
}
}
}
--
Gitblit v1.10.0