[jboss-cvs] JBossCache/src/org/jboss/cache/loader/bdbje ...
Manik Surtani
manik at jboss.org
Tue Jun 19 12:40:02 EDT 2007
User: msurtani
Date: 07/06/19 12:40:02
Modified: src/org/jboss/cache/loader/bdbje BdbjeCacheLoader.java
Log:
proper reentrancy for acquiring locks, as well as idempotency for releasing locks
Revision Changes Path
1.29 +20 -13 JBossCache/src/org/jboss/cache/loader/bdbje/BdbjeCacheLoader.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BdbjeCacheLoader.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/loader/bdbje/BdbjeCacheLoader.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- BdbjeCacheLoader.java 19 Jun 2007 15:41:34 -0000 1.28
+++ BdbjeCacheLoader.java 19 Jun 2007 16:40:02 -0000 1.29
@@ -52,7 +52,7 @@
*
* @author Mark Hayes May 16, 2004
* @author Bela Ban
- * @version $Id: BdbjeCacheLoader.java,v 1.28 2007/06/19 15:41:34 msurtani Exp $
+ * @version $Id: BdbjeCacheLoader.java,v 1.29 2007/06/19 16:40:02 msurtani Exp $
*/
@ThreadSafe
public class BdbjeCacheLoader extends AbstractCacheLoader
@@ -499,7 +499,7 @@
DatabaseEntry dataEntry = makeDataEntry(map);
DatabaseEntry keyEntry = makeKeyEntry(name);
Cursor cursor = cacheDb.openCursor(txn, null);
- lock.acquireLock(name, true);
+ if (!transactional) lock.acquireLock(name, true);
try
{
OperationStatus status = cursor.putNoOverwrite(keyEntry, dataEntry);
@@ -521,7 +521,7 @@
}
finally
{
- lock.releaseLock(name);
+ if (!transactional) lock.releaseLock(name);
cursor.close();
}
return oldVal;
@@ -568,7 +568,7 @@
DatabaseEntry dataEntry = makeDataEntry(values);
DatabaseEntry keyEntry = makeKeyEntry(name);
Cursor cursor = cacheDb.openCursor(txn, null);
- lock.acquireLock(name, true);
+ if (!transactional) lock.acquireLock(name, true);
try
{
OperationStatus status = cursor.putNoOverwrite(keyEntry, dataEntry);
@@ -593,7 +593,7 @@
}
finally
{
- lock.releaseLock(name);
+ if (!transactional) lock.releaseLock(name);
cursor.close();
}
}
@@ -620,7 +620,7 @@
}
finally
{
- lock.releaseLock(name);
+ if (!transactional) lock.releaseLock(name);
cursor.close();
}
}
@@ -743,7 +743,7 @@
DatabaseEntry foundData = new DatabaseEntry();
foundData.setPartial(0, 0, true);
Cursor cursor = cacheDb.openCursor(txn, null);
- lock.acquireLock(name, true);
+ if (!transactional) lock.acquireLock(name, true);
try
{
OperationStatus status =
@@ -761,7 +761,7 @@
}
finally
{
- lock.releaseLock(name);
+ if (!transactional) lock.releaseLock(name);
cursor.close();
}
}
@@ -805,7 +805,7 @@
DatabaseEntry keyEntry = makeKeyEntry(name);
DatabaseEntry foundData = new DatabaseEntry();
Cursor cursor = cacheDb.openCursor(txn, null);
- lock.acquireLock(name, true);
+ if (!transactional) lock.acquireLock(name, true);
try
{
OperationStatus status =
@@ -819,7 +819,7 @@
}
finally
{
- lock.releaseLock(name);
+ if (!transactional) lock.releaseLock(name);
cursor.close();
}
return oldVal;
@@ -857,7 +857,7 @@
dataEntry.setPartial(0, 0, true);
DatabaseEntry keyEntry = makeKeyEntry(name);
Cursor cursor = cacheDb.openCursor(txn, null);
- lock.acquireLock(name, true);
+ if (!transactional) lock.acquireLock(name, true);
try
{
OperationStatus status =
@@ -869,7 +869,7 @@
}
finally
{
- lock.releaseLock(name);
+ if (!transactional) lock.releaseLock(name);
cursor.close();
}
}
@@ -898,8 +898,15 @@
Transaction txn = performTransaction(modifications);
if (onePhase)
{
+ try
+ {
txn.commit();
}
+ finally
+ {
+ lock.releaseAllLocks(getFqns(modifications));
+ }
+ }
else
{
txnMap.put(tx, txn);
More information about the jboss-cvs-commits
mailing list