[jbosscache-commits] JBoss Cache SVN: r5855 - in core/branches/2.1.X/src: test/java/org/jboss/cache/cluster and 1 other directory.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Thu May 15 12:07:47 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-05-15 12:07:47 -0400 (Thu, 15 May 2008)
New Revision: 5855
Added:
core/branches/2.1.X/src/test/java/org/jboss/cache/cluster/ReplicationQueueTxTest.java
Modified:
core/branches/2.1.X/src/main/java/org/jboss/cache/transaction/TransactionEntry.java
Log:
JBCACHE-1348: Use of replication queue and transactions may cause modifications not to be applied on remote nodes
Modified: core/branches/2.1.X/src/main/java/org/jboss/cache/transaction/TransactionEntry.java
===================================================================
--- core/branches/2.1.X/src/main/java/org/jboss/cache/transaction/TransactionEntry.java 2008-05-15 15:53:01 UTC (rev 5854)
+++ core/branches/2.1.X/src/main/java/org/jboss/cache/transaction/TransactionEntry.java 2008-05-15 16:07:47 UTC (rev 5855)
@@ -447,8 +447,8 @@
public void reset()
{
orderedSynchronizationHandler = null;
- modification_list.clear();
- cl_mod_list.clear();
+ modification_list = null;
+ cl_mod_list = null;
option = null;
locks.clear();
if (dummyNodesCreatedByCacheLoader != null) dummyNodesCreatedByCacheLoader.clear();
Added: core/branches/2.1.X/src/test/java/org/jboss/cache/cluster/ReplicationQueueTxTest.java
===================================================================
--- core/branches/2.1.X/src/test/java/org/jboss/cache/cluster/ReplicationQueueTxTest.java (rev 0)
+++ core/branches/2.1.X/src/test/java/org/jboss/cache/cluster/ReplicationQueueTxTest.java 2008-05-15 16:07:47 UTC (rev 5855)
@@ -0,0 +1,58 @@
+package org.jboss.cache.cluster;
+
+import org.jboss.cache.Cache;
+import org.jboss.cache.DefaultCacheFactory;
+import org.jboss.cache.config.Configuration;
+import org.jboss.cache.factories.UnitTestCacheConfigurationFactory;
+import org.jboss.cache.misc.TestingUtil;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import javax.transaction.TransactionManager;
+
+ at Test(groups = {"functional", "transaction"})
+public class ReplicationQueueTxTest
+{
+ Cache cache, cache2;
+ TransactionManager txManager;
+
+ @BeforeMethod
+ public void setUp() throws CloneNotSupportedException
+ {
+ cache = new DefaultCacheFactory().createCache(UnitTestCacheConfigurationFactory.createConfiguration(Configuration.CacheMode.REPL_ASYNC), false);
+ cache.getConfiguration().setUseReplQueue(true);
+ cache.getConfiguration().setReplQueueInterval(100);
+ cache.getConfiguration().setReplQueueMaxElements(10);
+ cache.start();
+ cache2 = new DefaultCacheFactory().createCache(cache.getConfiguration().clone());
+
+ TestingUtil.blockUntilViewsReceived(60000, cache, cache2);
+ txManager = cache.getConfiguration().getRuntimeConfig().getTransactionManager();
+ }
+
+ @AfterMethod
+ public void tearDown()
+ {
+ TestingUtil.killCaches(cache, cache2);
+ }
+
+ public void testTransactionalReplication() throws Exception
+ {
+ // outside of tx scope
+ cache.put("/a", "k", "v");
+
+ TestingUtil.sleepThread(200);
+
+ assert cache2.get("/a", "k").equals("v");
+
+ // now, a transactional call
+ txManager.begin();
+ cache2.put("/a", "k", "v2");
+ txManager.commit();
+
+ TestingUtil.sleepThread(200);
+
+ assert cache.get("/a", "k").equals("v2");
+ }
+}
More information about the jbosscache-commits
mailing list