From 6781e3b79f4ff822aeb68d4d3a3dcd8b49ad86f9 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 12 Sep 2007 00:03:02 +0000
Subject: [PATCH] Make a couple of changes to help improve server performance:

---
 opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java |   92 ++++++++++++++++++++-------------------------
 1 files changed, 41 insertions(+), 51 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
index dd2467e..a614ac1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
@@ -30,7 +30,6 @@
 
 import java.security.MessageDigest;
 import java.util.Arrays;
-import java.util.concurrent.locks.ReentrantLock;
 
 import org.opends.messages.Message;
 import org.opends.server.admin.std.server.MD5PasswordStorageSchemeCfg;
@@ -83,7 +82,7 @@
   private MessageDigest messageDigest;
 
   // The lock used to provide threadsafe access to the message digest.
-  private ReentrantLock digestLock;
+  private Object digestLock;
 
 
 
@@ -124,7 +123,7 @@
       throw new InitializationException(message, e);
     }
 
-    digestLock = new ReentrantLock();
+    digestLock = new Object();
   }
 
 
@@ -149,27 +148,24 @@
   {
     byte[] digestBytes;
 
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
-      digestBytes = messageDigest.digest(plaintext.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
+      try
       {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        digestBytes = messageDigest.digest(plaintext.value());
       }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
 
-      Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
-          CLASS_NAME, getExceptionMessage(e));
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-                                   message, e);
-    }
-    finally
-    {
-      digestLock.unlock();
+        Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
+            CLASS_NAME, getExceptionMessage(e));
+        throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+                                     message, e);
+      }
     }
 
     return ByteStringFactory.create(Base64.encode(digestBytes));
@@ -191,27 +187,24 @@
 
     byte[] digestBytes;
 
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
-      digestBytes = messageDigest.digest(plaintext.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
+      try
       {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        digestBytes = messageDigest.digest(plaintext.value());
       }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
 
-      Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
-          CLASS_NAME, getExceptionMessage(e));
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-                                   message, e);
-    }
-    finally
-    {
-      digestLock.unlock();
+        Message message = ERR_PWSCHEME_CANNOT_ENCODE_PASSWORD.get(
+            CLASS_NAME, getExceptionMessage(e));
+        throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+                                     message, e);
+      }
     }
 
     buffer.append(Base64.encode(digestBytes));
@@ -231,24 +224,21 @@
   {
     byte[] userPWDigestBytes;
 
-    digestLock.lock();
-
-    try
+    synchronized (digestLock)
     {
-      userPWDigestBytes = messageDigest.digest(plaintextPassword.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
+      try
       {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        userPWDigestBytes = messageDigest.digest(plaintextPassword.value());
       }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
 
-      return false;
-    }
-    finally
-    {
-      digestLock.unlock();
+        return false;
+      }
     }
 
     byte[] storedPWDigestBytes;

--
Gitblit v1.10.0