[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