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/TaskBackend.java | 24 ++++++++++--------------
1 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
index c454452..9838cb3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
@@ -35,7 +35,6 @@
import java.net.InetAddress;
import java.security.MessageDigest;
import java.util.*;
-import java.util.concurrent.locks.Lock;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -59,6 +58,7 @@
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.*;
import org.opends.server.types.*;
+import org.opends.server.types.LockManager.DNLock;
import org.opends.server.util.DynamicConstants;
import org.opends.server.util.LDIFException;
import org.opends.server.util.LDIFReader;
@@ -413,8 +413,7 @@
return null;
}
- Lock lock = taskScheduler.readLockEntry(entryDN);
-
+ DNLock lock = taskScheduler.readLockEntry(entryDN);
try
{
if (entryDN.equals(taskRootDN))
@@ -453,7 +452,7 @@
}
finally
{
- taskScheduler.unlockEntry(entryDN, lock);
+ lock.unlock();
}
}
@@ -584,11 +583,10 @@
ModifyOperation modifyOperation) throws DirectoryException
{
DN entryDN = newEntry.getName();
-
- Lock entryLock = null;
+ DNLock entryLock = null;
if (! taskScheduler.holdsSchedulerLock())
{
- entryLock = LockManager.lockWrite(entryDN);
+ entryLock = DirectoryServer.getLockManager().tryWriteLockEntry(entryDN);
if (entryLock == null)
{
throw new DirectoryException(ResultCode.BUSY,
@@ -707,7 +705,7 @@
{
if (entryLock != null)
{
- LockManager.unlock(entryDN, entryLock);
+ entryLock.unlock();
}
}
}
@@ -868,8 +866,7 @@
}
else if (parentDN.equals(scheduledTaskParentDN))
{
- Lock lock = taskScheduler.readLockEntry(baseDN);
-
+ DNLock lock = taskScheduler.readLockEntry(baseDN);
try
{
Entry e = taskScheduler.getScheduledTaskEntry(baseDN);
@@ -890,13 +887,12 @@
}
finally
{
- taskScheduler.unlockEntry(baseDN, lock);
+ lock.unlock();
}
}
else if (parentDN.equals(recurringTaskParentDN))
{
- Lock lock = taskScheduler.readLockEntry(baseDN);
-
+ DNLock lock = taskScheduler.readLockEntry(baseDN);
try
{
Entry e = taskScheduler.getRecurringTaskEntry(baseDN);
@@ -917,7 +913,7 @@
}
finally
{
- taskScheduler.unlockEntry(baseDN, lock);
+ lock.unlock();
}
}
else
--
Gitblit v1.10.0