[infinispan-commits] Infinispan SVN: r2157 - in trunk/core/src: test/java/org/infinispan/loaders and 1 other directory.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Wed Aug 4 09:59:18 EDT 2010
Author: galder.zamarreno at jboss.com
Date: 2010-08-04 09:59:18 -0400 (Wed, 04 Aug 2010)
New Revision: 2157
Modified:
trunk/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java
trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java
Log:
[ISPN-565] (SKIP_LOCKING with cache loader and calling remove results in java.lang.ClassCastException) Fixed.
Modified: trunk/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java 2010-08-04 13:58:25 UTC (rev 2156)
+++ trunk/core/src/main/java/org/infinispan/container/EntryFactoryImpl.java 2010-08-04 13:59:18 UTC (rev 2157)
@@ -118,7 +118,7 @@
{
if (trace) log.trace("Exists in context.");
// acquire lock if needed
- if (alreadyLocked || acquireLock(ctx, key)) {
+ if (alreadyLocked || ctx.hasFlag(Flag.SKIP_LOCKING) || acquireLock(ctx, key)) {
if (cacheEntry instanceof MVCCEntry && (!forRemoval || !(cacheEntry instanceof NullMarkerEntry))) {
mvccEntry = (MVCCEntry) cacheEntry;
Modified: trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java 2010-08-04 13:58:25 UTC (rev 2156)
+++ trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java 2010-08-04 13:59:18 UTC (rev 2157)
@@ -1,5 +1,6 @@
package org.infinispan.loaders;
+import org.infinispan.AdvancedCache;
import org.infinispan.Cache;
import static org.infinispan.api.mvcc.LockAssert.assertNoLocks;
import org.infinispan.config.CacheLoaderManagerConfig;
@@ -7,6 +8,7 @@
import org.infinispan.container.DataContainer;
import org.infinispan.container.entries.InternalCacheEntry;
import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.context.Flag;
import org.infinispan.lifecycle.ComponentStatus;
import org.infinispan.loaders.dummy.DummyInMemoryCacheStore;
import org.infinispan.manager.EmbeddedCacheManager;
@@ -20,6 +22,7 @@
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+import java.lang.reflect.Method;
import java.util.Collections;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@@ -422,4 +425,11 @@
assert "v1".equals(cache.get("k1"));
assert "v2".equals(cache.get("k2"));
}
+
+ public void testSkipLocking(Method m) {
+ String name = m.getName();
+ AdvancedCache advancedCache = cache.getAdvancedCache();
+ advancedCache.put("k-" + name, "v-" + name);
+ advancedCache.withFlags(Flag.SKIP_LOCKING).put("k-" + name, "v2-" + name);
+ }
}
More information about the infinispan-commits
mailing list