[infinispan-commits] Infinispan SVN: r1748 - in trunk/core/src: test/java/org/infinispan/atomic and 1 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Thu May 6 10:30:47 EDT 2010
Author: galder.zamarreno at jboss.com
Date: 2010-05-06 10:30:46 -0400 (Thu, 06 May 2010)
New Revision: 1748
Modified:
trunk/core/src/main/java/org/infinispan/atomic/AtomicHashMap.java
trunk/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java
trunk/core/src/test/java/org/infinispan/atomic/AtomicHashMapConcurrencyTest.java
trunk/core/src/test/java/org/infinispan/marshall/VersionAwareMarshallerTest.java
Log:
[ISPN-419] (Transactional AtomicHashMap modifications are lost when persisting) Tree module relies on the logic that getting a new atomic hash map will put it in the cache, so restore it to avoid introducing regressions.
Modified: trunk/core/src/main/java/org/infinispan/atomic/AtomicHashMap.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/atomic/AtomicHashMap.java 2010-05-06 13:50:34 UTC (rev 1747)
+++ trunk/core/src/main/java/org/infinispan/atomic/AtomicHashMap.java 2010-05-06 14:30:46 UTC (rev 1748)
@@ -58,11 +58,14 @@
* Construction only allowed through this factory method. This factory is intended for use internally by the
* CacheDelegate. User code should use {@link org.infinispan.atomic.AtomicMapLookup#getAtomicMap(Cache, Object)}.
*/
- public static AtomicHashMap newInstance() {
- return new AtomicHashMap();
+ public static AtomicHashMap newInstance(Cache cache, Object cacheKey) {
+ AtomicHashMap value = new AtomicHashMap();
+ Object oldValue = cache.putIfAbsent(cacheKey, value);
+ if (oldValue != null) value = (AtomicHashMap) oldValue;
+ return value;
}
- AtomicHashMap() {
+ public AtomicHashMap() {
delegate = new FastCopyHashMap<K, V>();
}
Modified: trunk/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java 2010-05-06 13:50:34 UTC (rev 1747)
+++ trunk/core/src/main/java/org/infinispan/atomic/AtomicMapLookup.java 2010-05-06 14:30:46 UTC (rev 1748)
@@ -21,7 +21,7 @@
@SuppressWarnings("unchecked")
public static <MK, K, V> AtomicMap<K, V> getAtomicMap(Cache<?, ?> cache, MK key) {
Object value = cache.get(key);
- if (value == null) value = AtomicHashMap.newInstance();
+ if (value == null) value = AtomicHashMap.newInstance(cache, key);
AtomicHashMap<K, V> castValue = (AtomicHashMap<K, V>) value;
return castValue.getProxy(cache, key, cache.getAdvancedCache().getBatchContainer(), cache.getAdvancedCache().getInvocationContextContainer());
}
Modified: trunk/core/src/test/java/org/infinispan/atomic/AtomicHashMapConcurrencyTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/atomic/AtomicHashMapConcurrencyTest.java 2010-05-06 13:50:34 UTC (rev 1747)
+++ trunk/core/src/test/java/org/infinispan/atomic/AtomicHashMapConcurrencyTest.java 2010-05-06 14:30:46 UTC (rev 1748)
@@ -57,8 +57,7 @@
public void testConcurrentCreate() throws Exception {
tm.begin();
- AtomicMap<String, String> map = AtomicMapLookup.getAtomicMap(cache, KEY);
- map.put("blah", "blah");
+ AtomicMapLookup.getAtomicMap(cache, KEY);
OtherThread ot = new OtherThread();
ot.start();
Object response = ot.response.take();
@@ -78,7 +77,6 @@
public void testReadAfterTxStarted() throws Exception {
AtomicMap<Integer, String> atomicMap = AtomicMapLookup.getAtomicMap(cache, KEY);
- cache.putIfAbsent(KEY, AtomicHashMap.newInstance());
atomicMap.put(1, "existing");
tm.begin();
atomicMap.put(1, "newVal");
@@ -109,7 +107,6 @@
try {
tm.begin();
AtomicMap<Integer, String> atomicMap = AtomicMapLookup.getAtomicMap(cache, KEY);
- if (cache.get(KEY) == null) cache.putIfAbsent(KEY, AtomicHashMap.newInstance());
boolean notCommited = true;
while (notCommited) {
Operation op = toExecute.take();
Modified: trunk/core/src/test/java/org/infinispan/marshall/VersionAwareMarshallerTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/marshall/VersionAwareMarshallerTest.java 2010-05-06 13:50:34 UTC (rev 1747)
+++ trunk/core/src/test/java/org/infinispan/marshall/VersionAwareMarshallerTest.java 2010-05-06 14:30:46 UTC (rev 1748)
@@ -346,7 +346,7 @@
}
public void testAtomicHashMap() throws Exception {
- AtomicHashMap<String, String> m = AtomicHashMap.newInstance();
+ AtomicHashMap<String, String> m = new AtomicHashMap<String, String>();
m.initForWriting();
m.put("k1", "v1");
m.put("k1", "v2");
@@ -359,13 +359,13 @@
}
assert m.size() == 1;
- m = AtomicHashMap.newInstance();
+ m = new AtomicHashMap<String, String>();
assert m.isEmpty();
bytes = marshaller.objectToByteBuffer(m);
m = (AtomicHashMap<String, String>) marshaller.objectFromByteBuffer(bytes);
assert m.isEmpty();
- m = AtomicHashMap.newInstance();
+ m = new AtomicHashMap<String, String>();
m.initForWriting();
m.put("k1", "v1");
m.put("k2", "v2");
@@ -379,7 +379,7 @@
}
assert m.size() == 2;
- m = AtomicHashMap.newInstance();
+ m = new AtomicHashMap<String, String>();
m.initForWriting();
m.put("k5", "v1");
m.put("k5", "v2");
More information about the infinispan-commits
mailing list