Author: manik.surtani(a)jboss.com
Date: 2008-05-27 16:13:32 -0400 (Tue, 27 May 2008)
New Revision: 5892
Modified:
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java
core/trunk/src/main/java/org/jboss/cache/interceptors/PessimisticLockInterceptor.java
Log:
Fixed proper cache locking during cache loading
Modified:
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java
===================================================================
---
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java 2008-05-27
19:42:22 UTC (rev 5891)
+++
core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterceptor.java 2008-05-27
20:13:32 UTC (rev 5892)
@@ -431,8 +431,10 @@
{
if (configuration.isNodeLockingOptimistic()) return;
- lockManager.lock(fqn, lockType, ctx.getGlobalTransaction() != null ?
ctx.getGlobalTransaction() : Thread.currentThread());
- if (recursive) lockManager.lockAllAndRecord(fqn, lockType, ctx);
+ if (recursive)
+ lockManager.lockAllAndRecord(fqn, lockType, ctx);
+ else
+ lockManager.lockAndRecord(fqn, lockType, ctx);
}
/**
Modified:
core/trunk/src/main/java/org/jboss/cache/interceptors/PessimisticLockInterceptor.java
===================================================================
---
core/trunk/src/main/java/org/jboss/cache/interceptors/PessimisticLockInterceptor.java 2008-05-27
19:42:22 UTC (rev 5891)
+++
core/trunk/src/main/java/org/jboss/cache/interceptors/PessimisticLockInterceptor.java 2008-05-27
20:13:32 UTC (rev 5892)
@@ -190,9 +190,14 @@
lockManager.lockAllAndRecord(dataContainer.peek(command.getTo(), true, false),
READ, ctx);
}
Object retValue = invokeNextInterceptor(ctx, command);
- // do a REAL remove here.
- NodeSPI n = dataContainer.peek(command.getFqn(), true, false);
- if (n != null) lockManager.unlockAll(n, Thread.currentThread());
+
+ if (ctx.getTransaction() == null) // not transactional
+ {
+ // do a REAL remove here.
+ NodeSPI n = dataContainer.peek(command.getFqn(), true, false);
+ if (n != null) lockManager.unlockAll(n, Thread.currentThread());
+ }
+
return retValue;
}
Show replies by date