Author: mir
Date: Mon Jul  5 07:49:58 2010
New Revision: 960472

URL: http://svn.apache.org/viewvc?rev=960472&view=rev
Log:
CLEREZZA-254: fixed deadlock and other lock-related bugs

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java?rev=960472&r1=960471&r2=960472&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
 Mon Jul  5 07:49:58 2010
@@ -509,15 +509,16 @@ public class UserManagerWeb implements G
                LockableMGraph contentGraph = (LockableMGraph) 
cgProvider.getContentGraph();
                NonLiteral user = getCustomUser(contentGraph, userName);
                if (user != null) {
-                       Lock readLock = contentGraph.getLock().readLock();
-                       readLock.lock();
+                       Lock writeLock = contentGraph.getLock().writeLock();
+                       writeLock.lock();
                        try {
                                Iterator<Triple> userTriples = 
contentGraph.filter(user, null, null);
                                while (userTriples.hasNext()) {
-                                       contentGraph.remove(userTriples.next());
+                                       userTriples.next();
+                                       userTriples.remove();
                                }
                        } finally {
-                               readLock.unlock();
+                               writeLock.unlock();
                        }
                        userManager.deleteUser(userName);
                        return 
RedirectUtil.createSeeOtherResponse("list-users", uriInfo);

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java?rev=960472&r1=960471&r2=960472&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
 Mon Jul  5 07:49:58 2010
@@ -185,10 +185,12 @@ public class UserManagerImpl implements 
 
        private void deleteTriplesOfASubject(NonLiteral subject) {
                Lock writeLock = systemGraph.getLock().writeLock();
+               writeLock.lock();
                try {
                        Iterator<Triple> triples = systemGraph.filter(subject, 
null, null);
                        while (triples.hasNext()) {
-                               systemGraph.remove(triples.next());
+                               triples.next();
+                               triples.remove();
                        }
                } finally {
                        writeLock.unlock();


Reply via email to