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();