<!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>&nbsp;</div>
<div dir="ltr" align="left"><font color="#0000ff" size="2" face="Arial"><span class="290542519-09112013">&nbsp;&nbsp; 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">&nbsp;&nbsp; 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>&nbsp;</div>
<div dir="ltr" align="left"><font color="#0000ff"><span class="290542519-09112013"><font face="Arial"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="247535616-09112013"><font color="#000000">EmbeddedCacheManager&nbsp;manager =
<b>new</b> DefaultCacheManager(&quot;config/infinispan-config.xml&quot;);</font></span></font></font>
<div dir="ltr" align="left"><span class="247535616-09112013"><font face="Arial"><font size="2"><span class="290542519-09112013">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><font color="#000000">Configuration rc = manager.getCacheConfiguration(&quot;transaction&quot;);</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>manager.defineConfiguration(&quot;test1&quot;, 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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>ConcurrentMap&lt;String, Rollback&gt; cache1 = manager.getCache(&quot;test1&quot;);</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>TransactionManager tm = manager.getCache(&quot;transaction&quot;).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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Rollback t1 = <b>new</b> Rollback(&quot;k1&quot;, &quot;v1&quot;);</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>cache1.put(&quot;k1&quot;, 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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>R</em><em>ollback tmp = cache1.get(&quot;k1&quot;); </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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>tmp.setName(&quot;abcd&quot;);&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>cache1.replace(&quot;k1&quot;, 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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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>&nbsp;</div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><font size="2" face="Arial"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Even after doing the rollback, &quot;k1&quot; still points to name &quot;abcd&quot;.</strong></font></span></span></div>
<div dir="ltr" align="left"><span class="247535616-09112013"><span class="290542519-09112013"><strong><font size="2" face="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only if I do a
<em><font color="#ff0000">cache1.get(&quot;k1&quot;).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>&nbsp;</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>&nbsp;</div>
<div dir="ltr" align="left"><span class="247535616-09112013"><strong><font size="2" face="Arial"></font></strong></span>&nbsp;</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>&nbsp;</div>
<div>&nbsp; I have two osgi bundles, both having two separate caches.</div>
<div>&nbsp; I explicitly started a transaction in Bundle 1.</div>
<div>&nbsp; Within the transaction, I am accessing Bundle 2's cache(this is implicit transaction, since autocommit is true), and modifying it.</div>
<div>&nbsp; Now, there is some operation on Bundle 1's cache done.</div>
<div>&nbsp; After this operation, if I do a roll back,&nbsp; Only Bundle 1's cache operations are getting rolled back.</div>
<div>&nbsp; I am not getting any error, though.</div>
<div>&nbsp; Does anyone know why this happens?</div>
<div>&nbsp;</div>
<div>&nbsp; Steps :</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; 1) Bundle 1 - transaction started</div>
<div>&nbsp;&nbsp;&nbsp; 2) update bundle 2 cache</div>
<div>&nbsp;&nbsp;&nbsp; 3) update bundle 1 cache</div>
<div>&nbsp;&nbsp;&nbsp; 4) Bundle 1 - transaction rollback</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; Issue : bundle 2 cache not rolled back!!</div>
<div>&nbsp;</div>
<div>Thanks,</div>
<div>Faseela</div>
<div>&nbsp;</div>
</span></font>
</body>
</html>