From 27effea893c390ebcac1692c7a3ef67d90f5ddd6 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Mon, 12 Oct 2015 12:42:17 +0000
Subject: [PATCH] OPENDJ-2324: fix deadlock during update operations

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEStorage.java |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEStorage.java
index ac978a8..080c9af 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/JEStorage.java
@@ -26,6 +26,8 @@
 package org.opends.server.backends.jeb;
 
 import static com.sleepycat.je.EnvironmentConfig.*;
+import static com.sleepycat.je.LockMode.READ_COMMITTED;
+import static com.sleepycat.je.LockMode.RMW;
 import static com.sleepycat.je.OperationStatus.*;
 
 import static org.forgerock.util.Utils.*;
@@ -97,10 +99,8 @@
 import com.sleepycat.je.Durability;
 import com.sleepycat.je.Environment;
 import com.sleepycat.je.EnvironmentConfig;
-import com.sleepycat.je.LockMode;
 import com.sleepycat.je.OperationStatus;
 import com.sleepycat.je.Transaction;
-import com.sleepycat.je.TransactionConfig;
 
 /** Berkeley DB Java Edition (JE for short) database implementation of the {@link Storage} engine. */
 public final class JEStorage implements Storage, Backupable, ConfigurationChangeListener<JEBackendCfg>,
@@ -435,7 +435,7 @@
       try
       {
         DatabaseEntry dbValue = new DatabaseEntry();
-        boolean isDefined = getOrOpenTree(treeName).get(txn, db(key), dbValue, null) == SUCCESS;
+        boolean isDefined = getOrOpenTree(treeName).get(txn, db(key), dbValue, READ_COMMITTED) == SUCCESS;
         return valueToBytes(dbValue, isDefined);
       }
       catch (DatabaseException e)
@@ -453,7 +453,7 @@
         DatabaseEntry dbKey = db(key);
         DatabaseEntry dbValue = new DatabaseEntry();
 
-        boolean isDefined = tree.get(txn, dbKey, dbValue, LockMode.RMW) == SUCCESS;
+        boolean isDefined = tree.get(txn, dbKey, dbValue, RMW) == SUCCESS;
         final ByteSequence oldValue = valueToBytes(dbValue, isDefined);
         final ByteSequence newValue = f.computeNewValue(oldValue);
         if (!Objects.equals(newValue, oldValue))

--
Gitblit v1.10.0