<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="GENERATOR" content="MSHTML 9.00.8112.16514">
<!-- converted from rtf --><style>.EmailQuote {
        BORDER-LEFT: #800000 2px solid; PADDING-LEFT: 4pt; MARGIN-LEFT: 1pt
}
</style>
</head>
<body>
<div dir="ltr" align="left"><font color="#0000ff" size="2" face="Arial"><span class="290542519-09112013">Hi,</span></font></div>
<div dir="ltr" align="left"><font color="#0000ff" size="2" face="Arial"><span class="290542519-09112013"></span></font> </div>
<div dir="ltr" align="left"><font color="#0000ff" size="2" face="Arial"><span class="290542519-09112013"> The issue I mentioned below was not related to nested transactions.</span></font></div>
<div dir="ltr" align="left"><font color="#0000ff" size="2" face="Arial"><span class="290542519-09112013"> I debugged further, and the issue narrowed down to the following:</span></font></div>
<div dir="ltr" align="left"><font color="#0000ff" size="2" face="Arial"><span class="290542519-09112013"></span></font> </div>
<div dir="ltr" align="left"><font color="#0000ff"><span class="290542519-09112013"><font face="Arial"><font size="2"> <span class="247535616-09112013"><font color="#000000">EmbeddedCacheManager manager =
<b>new</b> DefaultCacheManager("config/infinispan-config.xml");</font></span></font></font>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><span class="290542519-09112013">
</span><font color="#000000">Configuration rc = manager.getCacheConfiguration("transaction");</font></font></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><font color="#000000"><span class="290542519-09112013">
</span>manager.defineConfiguration("test1", rc);</font></font></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><font color="#000000"><span class="290542519-09112013">
</span>ConcurrentMap<String, Rollback> cache1 = manager.getCache("test1");</font></font></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><font color="#000000"><span class="290542519-09112013">
</span>TransactionManager tm = manager.getCache("transaction").getAdvancedCache().getTransactionManager();</font></font></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><font color="#000000"><span class="290542519-09112013">
</span>Rollback t1 = <b>new</b> Rollback("k1", "v1");</font></font></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><font color="#000000"><span class="290542519-09112013">
</span>cache1.put("k1", t1);</font></font></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><font size="2" face="Arial"></font></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font face="Arial"><font size="2"><span class="290542519-09112013">
</span>tm.begin();</font></font></strong></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font face="Arial"><font color="#ff0000"><font size="2"><em><span class="290542519-09112013">
</span>R</em><em>ollback tmp = cache1.get("k1"); </em></font></font></font></strong></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><em><font face="Arial"><font color="#ff0000"><font size="2"><span class="290542519-09112013">
</span>tmp.setName("abcd"); </font></font></font></em></strong></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"></span><span class="247535616-09112013"><strong><em><font face="Arial"><font color="#ff0000"><font size="2"><span class="290542519-09112013">
</span>cache1.replace("k1", tmp);</font></font></font></em></strong></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font face="Arial"><font size="2"><span class="290542519-09112013">
</span>tm.rollback();</font></font></strong></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font size="2" face="Arial"></font></strong></span> </div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><font size="2" face="Arial"><strong> Even after doing the rollback, "k1" still points to name "abcd".</strong></font></span></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><strong><font size="2" face="Arial"> Only if I do a
<em><font color="#ff0000">cache1.get("k1").clone(), </font><font color="#0000ff">rollback is functioning as expected.</font></em></font></strong></span></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><strong><font size="2" face="Arial"></font></strong></span></span> </div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><strong><font size="2" face="Arial">Thanks,</font></strong></span></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><strong><font size="2" face="Arial">Faseela</font></strong></span></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font size="2" face="Arial"></font></strong></span> </div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font size="2" face="Arial"></font></strong></span> </div>
</span></font></div>
<br>
<div dir="ltr" lang="en-us" class="OutlookMessageHeader" align="left">
<hr tabindex="-1">
<font size="2" face="Tahoma"><b>From:</b> infinispan-dev-bounces@lists.jboss.org [mailto:infinispan-dev-bounces@lists.jboss.org]
<b>On Behalf Of </b>Faseela K<br>
<b>Sent:</b> Friday, November 08, 2013 6:39 PM<br>
<b>To:</b> infinispan -Dev List<br>
<b>Subject:</b> [infinispan-dev] Issue with nested transactions<br>
</font><br>
</div>
<div></div>
<font size="2" face="Arial"><span style="FONT-SIZE: 10pt">
<div>Hi,</div>
<div> </div>
<div> I have two osgi bundles, both having two separate caches.</div>
<div> I explicitly started a transaction in Bundle 1.</div>
<div> Within the transaction, I am accessing Bundle 2's cache(this is implicit transaction, since autocommit is true), and modifying it.</div>
<div> Now, there is some operation on Bundle 1's cache done.</div>
<div> After this operation, if I do a roll back, Only Bundle 1's cache operations are getting rolled back.</div>
<div> I am not getting any error, though.</div>
<div> Does anyone know why this happens?</div>
<div> </div>
<div> Steps :</div>
<div> </div>
<div> 1) Bundle 1 - transaction started</div>
<div> 2) update bundle 2 cache</div>
<div> 3) update bundle 1 cache</div>
<div> 4) Bundle 1 - transaction rollback</div>
<div> </div>
<div> Issue : bundle 2 cache not rolled back!!</div>
<div> </div>
<div>Thanks,</div>
<div>Faseela</div>
<div> </div>
</span></font>
</body>
</html>