[infinispan-dev] Issue with transaction rollback
Sanne Grinovero
sanne at infinispan.org
Sat Nov 9 15:50:47 EST 2013
Hi Faseela,
you should not attempt to mutate the value retrieved from the Cache.
I would suggest to only store immutable objects in a Cache; in other
words rather than invoking a setter on property Name, replace the
entry with a new instance of Rollback which has the new name.
Sanne
On 9 November 2013 19:31, Faseela K <faseela.k at ericsson.com> wrote:
> 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 at lists.jboss.org
> [mailto:infinispan-dev-bounces at 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
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
More information about the infinispan-dev
mailing list