summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-05-12 17:01:12 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-05-12 17:01:12 +0200
commit64a6dfbe433bd374604f40aa3b7f44577e1ebfb7 (patch)
tree36caa498b62f36189e9c662dc30697b523da7223
parent56f12d7ddce6cdd3b83d8f000d3a584a4e33bc2a (diff)
Remove lock in TransactionManager get method, as this may be causing
deadlocks.
-rw-r--r--src/main/java/com/c2kernel/persistency/TransactionManager.java19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/main/java/com/c2kernel/persistency/TransactionManager.java b/src/main/java/com/c2kernel/persistency/TransactionManager.java
index 86e8199..eeb986b 100644
--- a/src/main/java/com/c2kernel/persistency/TransactionManager.java
+++ b/src/main/java/com/c2kernel/persistency/TransactionManager.java
@@ -63,19 +63,18 @@ public class TransactionManager {
Integer sysKeyIntObj = new Integer(sysKey);
// check to see if the locker has been modifying this cluster
- synchronized(locks) {
- if (locks.containsKey(sysKeyIntObj) && locks.get(sysKeyIntObj).equals(locker)) {
- ArrayList<TransactionEntry> lockerTransaction = pendingTransactions.get(locker);
- for (TransactionEntry thisEntry : lockerTransaction) {
- if (sysKey == thisEntry.sysKey.intValue() && path.equals(thisEntry.getPath())) {
- if (thisEntry.obj == null)
- throw new ClusterStorageException("ClusterStorageManager.get() - Cluster " + path + " has been deleted in " + sysKey +
- " but not yet committed");
- return thisEntry.obj;
- }
+ if (locks.containsKey(sysKeyIntObj) && locks.get(sysKeyIntObj).equals(locker)) {
+ ArrayList<TransactionEntry> lockerTransaction = pendingTransactions.get(locker);
+ for (TransactionEntry thisEntry : lockerTransaction) {
+ if (sysKey == thisEntry.sysKey.intValue() && path.equals(thisEntry.getPath())) {
+ if (thisEntry.obj == null)
+ throw new ClusterStorageException("ClusterStorageManager.get() - Cluster " + path + " has been deleted in " + sysKey +
+ " but not yet committed");
+ return thisEntry.obj;
}
}
}
+
return storage.get(sysKeyIntObj, path);
}