From af76a3750288d90c006022829887c92601a4737c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 24 Jun 2013 11:56:44 +0000
Subject: [PATCH] OPENDJ-885 - Replication replay may lose changes if it can't acquire a writeLock

---
 opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java |   23 ++++++-----------------
 1 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java b/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
index b5c902d..39fd24c 100644
--- a/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
+++ b/opends/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
@@ -76,10 +76,10 @@
    */
   private static final DebugTracer TRACER = getTracer();
 
-  // The identity mapper that will be used to map ID strings to user entries.
+  /** The identity mapper that will be used to map ID strings to user entries.*/
   private IdentityMapper<?> identityMapper;
 
-  // The current configuration for this SASL mechanism handler.
+  /** The current configuration for this SASL mechanism handler. */
   private PlainSASLMechanismHandlerCfg currentConfig;
 
 
@@ -247,23 +247,12 @@
 
       // Acquire a read lock on the user entry.  If this fails, then so will the
       // authentication.
-      Lock readLock = null;
-      for (int i=0; i < 3; i++)
-      {
-        readLock = LockManager.lockRead(userDN);
-        if (readLock != null)
-        {
-          break;
-        }
-      }
-
+      final Lock readLock = LockManager.lockRead(userDN);
       if (readLock == null)
       {
-        bindOperation.setResultCode(DirectoryServer.getServerErrorResultCode());
-
-        Message message = INFO_SASLPLAIN_CANNOT_LOCK_ENTRY.get(String.valueOf(
-                userDN));
-        bindOperation.setAuthFailureReason(message);
+        bindOperation.setResultCode(ResultCode.BUSY);
+        bindOperation.setAuthFailureReason(INFO_SASLPLAIN_CANNOT_LOCK_ENTRY
+            .get(String.valueOf(userDN)));
         return;
       }
 

--
Gitblit v1.10.0