Hi,
The issue I mentioned below was not related to nested transactions.
I debugged further, and the issue narrowed down to the following:
EmbeddedCacheManager manager = new
DefaultCacheManager("config/infinispan-config.xml");
Configuration rc = manager.getCacheConfiguration("transaction");
manager.defineConfiguration("test1", rc);
ConcurrentMap<String, Rollback> cache1 = manager.getCache("test1");
TransactionManager tm =
manager.getCache("transaction").getAdvancedCache().getTransactionManager();
Rollback t1 = new Rollback("k1", "v1");
cache1.put("k1", t1);
tm.begin();
Rollback tmp = cache1.get("k1");
tmp.setName("abcd");
cache1.replace("k1", tmp);
tm.rollback();
Even after doing the rollback, "k1" still points to name
"abcd".
Only if I do a cache1.get("k1").clone(), rollback is functioning as
expected.
Thanks,
Faseela
________________________________
From: infinispan-dev-bounces(a)lists.jboss.org
[mailto:infinispan-dev-bounces@lists.jboss.org] On Behalf Of Faseela K
Sent: Friday, November 08, 2013 6:39 PM
To: infinispan -Dev List
Subject: [infinispan-dev] Issue with nested transactions
Hi,
I have two osgi bundles, both having two separate caches.
I explicitly started a transaction in Bundle 1.
Within the transaction, I am accessing Bundle 2's cache(this is implicit
transaction, since autocommit is true), and modifying it.
Now, there is some operation on Bundle 1's cache done.
After this operation, if I do a roll back, Only Bundle 1's cache operations are
getting rolled back.
I am not getting any error, though.
Does anyone know why this happens?
Steps :
1) Bundle 1 - transaction started
2) update bundle 2 cache
3) update bundle 1 cache
4) Bundle 1 - transaction rollback
Issue : bundle 2 cache not rolled back!!
Thanks,
Faseela