<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 27, 2014 at 2:43 PM, Pedro Ruivo <span dir="ltr">&lt;<a href="mailto:pedro@infinispan.org" target="_blank">pedro@infinispan.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im"><br>
<br>
On 01/27/2014 12:26 PM, Emmanuel Bernard wrote:<br>
&gt; I&#39;d be curious to see performance tests on Pedro&#39;s approach (ie walk<br>
&gt; through the entire data key set to find the matching elements of a given<br>
&gt; group). That might be fast enough but that looks quite scary compared to<br>
&gt; a single lookup.<br>
<br>
</div>I would prefer to have a performance hit than a map of sets (group name<br>
=&gt; set of keys). I also think that keep this map synchronized with the<br>
keys in data container will not be easy...<br></blockquote><div><br></div><div>Sure, I would prefer the simpler implementation as well. But if changing an application to use groups instead of atomic maps will change the processing time of a request from 1ms to 1s, I&#39;m pretty sure users will prefer to keep use the atomic maps :)<br>

<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="im"><br>
&gt;<br>
&gt; Any doc explaining how FGAM is broken in transactions for curiosity.<br>
&gt;<br>
<br>
</div>well, the map is not isolated, so you can see the updates from other<br>
transactions immediately (<a href="https://issues.jboss.org/browse/ISPN-3932" target="_blank">https://issues.jboss.org/browse/ISPN-3932</a>)<br>
<br></blockquote><div><br></div><div>Do you know if AtomicMap is affected, too?<br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


It also does not work when you enable write skew check with optimistic<br>
transactions (we have a JIRA somewhere)<br></blockquote><div><br></div><div>I assume you mean <a href="https://issues.jboss.org/browse/ISPN-3939">https://issues.jboss.org/browse/ISPN-3939</a> ?<br></div><div>This looks like it also affects AtomicMap, so the only workaround is to use pessimistic locking.<br>

<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class=""><div class="h5"><br>
&gt; On Mon 2014-01-27 11:54, Pedro Ruivo wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 01/27/2014 09:52 AM, Sanne Grinovero wrote:<br>
&gt;&gt;&gt; On 27 January 2014 09:38, Pedro Ruivo &lt;<a href="mailto:pedro@infinispan.org">pedro@infinispan.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 01/27/2014 09:20 AM, Sanne Grinovero wrote:<br>
&gt;&gt;&gt;&gt;&gt; On 23 January 2014 18:03, Dan Berindei &lt;<a href="mailto:dan.berindei@gmail.com">dan.berindei@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; On 22 Jan 2014 16:10, &quot;Pedro Ruivo&quot; &lt;<a href="mailto:pedro@infinispan.org">pedro@infinispan.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 01/22/2014 01:58 PM, Dan Berindei wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; It would also require us to keep a Set&lt;K&gt; for each group, with the keys<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; associated with that group. As such, I&#39;m not sure it would be a lot<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; easier to implement (correctly) than FineGrainedAtomicMap.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Dan, I didn&#39;t understand why do we need to keep a Set&lt;K&gt;. Can you<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; elaborate?<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; We&#39;d need some way to keep track of the keys that are part of the group,<br>
&gt;&gt;&gt;&gt;&gt;&gt; iterating over the entire cache for every getGroup() call would be way too<br>
&gt;&gt;&gt;&gt;&gt;&gt; slow.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Right, and load all entries from any CacheStore too :-/<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; IMO, I prefer to iterate over the data container and cache loader when<br>
&gt;&gt;&gt;&gt; it is needed than keep the Set&lt;K&gt; for each group. I think the memory<br>
&gt;&gt;&gt;&gt; will thank you<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Of course. I&#39;m just highlighting how importand Dan&#39;s comment is,<br>
&gt;&gt;&gt; because we obviously don&#39; t want to load everything from CacheStore.<br>
&gt;&gt;&gt; So, tracking which entries are part of the group is essential:<br>
&gt;&gt;&gt; failing this, I&#39;m still skeptical about why the Grouping API is a<br>
&gt;&gt;&gt; better replacement than FGAM.<br>
&gt;&gt;<br>
&gt;&gt; I have one reason: FGAM does not work inside transactions...<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Sanne<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; infinispan-dev mailing list<br>
&gt;&gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; infinispan-dev mailing list<br>
&gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt; _______________________________________________<br>
&gt; infinispan-dev mailing list<br>
&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;<br>
_______________________________________________<br>
infinispan-dev mailing list<br>
<a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
</div></div></blockquote></div><br></div></div>