From d4ba1923c8724f8865f75261fccc0134021e05a7 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 22 Nov 2013 12:26:06 +0000
Subject: [PATCH] Found and fixed a new deadlock with read vs. write locks.

---
 opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDB.java |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDB.java
index 8203e8a..2a9da68 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDB.java
@@ -614,14 +614,12 @@
       }
       catch (ChangelogException e)
       {
-        // Unlocking is required before throwing any exception
-        closeAndReleaseReadLock(localCursor);
+        StaticUtils.close(localCursor);
         throw e;
       }
       catch (DatabaseException e)
       {
-        // Unlocking is required before throwing any exception
-        closeAndReleaseReadLock(localCursor);
+        StaticUtils.close(localCursor);
         throw new ChangelogException(e);
       }
       finally
@@ -666,13 +664,13 @@
       }
       catch (ChangelogException e)
       {
-        closeAndReleaseReadLock(localCursor);
+        StaticUtils.close(localCursor);
         abort(localTxn);
         throw e;
       }
       catch (Exception e)
       {
-        closeAndReleaseReadLock(localCursor);
+        StaticUtils.close(localCursor);
         abort(localTxn);
         throw new ChangelogException(e);
       }

--
Gitblit v1.10.0