[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