You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gr...@apache.org on 2010/08/01 01:46:15 UTC

svn commit: r981103 - /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java

Author: grkvlt
Date: Sat Jul 31 23:46:15 2010
New Revision: 981103

URL: http://svn.apache.org/viewvc?rev=981103&view=rev
Log:
QPID-2668: Improve PlainPasswordPrincipalDatabase lock management

Applied patch from Sorin Suciu <ss...@gmail.com>

Modified:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java?rev=981103&r1=981102&r2=981103&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java Sat Jul 31 23:46:15 2010
@@ -179,39 +179,28 @@ public class PlainPasswordFilePrincipalD
             throw new AccountNotFoundException(principal.getName());
         }
 
+        char[] orig = user.getPassword();
+        _userUpdate.lock();
         try
         {
-            try
-            {
-                _userUpdate.lock();
-                char[] orig = user.getPassword();
-                user.setPassword(password);
+            user.setPassword(password);
 
-                try
-                {
-                    savePasswordFile();
-                }
-                catch (IOException e)
-                {
-                    _logger.error("Unable to save password file, password change for user '" + principal + "' discarded");
-                    //revert the password change
-                    user.setPassword(orig);
-                    return false;
-                }
-                return true;
-            }
-            finally
-            {
-                if (_userUpdate.isHeldByCurrentThread())
-                {
-                    _userUpdate.unlock();
-                }
-            }
+            savePasswordFile();
+
+            return true;
         }
-        catch (Exception e)
+        catch (IOException e)
         {
+            _logger.error("Unable to save password file due to '"+e.getMessage()
+                          +"', password change for user '" + principal + "' discarded");
+            //revert the password change
+            user.setPassword(orig);
             return false;
         }
+        finally
+        {                                   
+            _userUpdate.unlock();
+        }
     }
 
     public boolean createPrincipal(Principal principal, char[] password)



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org