<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<base href="x-msg://24/">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple style='word-wrap: break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space'>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>&#8220;</span>Again, annotations or a &quot;producer&quot;
method could be additional ways to do this, but none of these remove the need
for being able to do so on the API as above. &nbsp;And if it is on the API,
then is there any real value in allowing annotations/producer methods?<span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&#8221;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I think the need for annotations/configuration of the group depends
on your usage.  If you want support grouping but hide the details of how and
what groups a set of classes/object instances, etc map to then annotations/configuration
easily give you that ability.  Of course this could be done by writing a layer
that does this for us but if it&#8217;s there as part of the core then all the
better.  <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>The only reason I bring this up is it sounded as if you didn&#8217;t
see value in annotations/configuration or thought it wouldn&#8217;t work using
annotations/configuration for this and you were only going to implement the new
API.   I just wanted to provide feedback that I do feel it&#8217;s valuable.  I
may have misunderstood what you&#8217;re planning.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Bryan<o:p></o:p></span></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
infinispan-dev-bounces@lists.jboss.org [mailto:infinispan-dev-bounces@lists.jboss.org]
<b>On Behalf Of </b>Manik Surtani<br>
<b>Sent:</b> Tuesday, March 23, 2010 1:23 PM<br>
<b>To:</b> infinispan -Dev List<br>
<b>Subject:</b> Re: [infinispan-dev] A mechanism for users to control
datalocalitywhen using DIST<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<div>

<p class=MsoNormal>On 23 Mar 2010, at 18:53, Bryan Grunow wrote:<o:p></o:p></p>

</div>

<p class=MsoNormal><br>
<br>
<o:p></o:p></p>

<div>

<div>

<div>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>&#8220;</span>put(K, V) is overloaded with put(K, V, String
group)&#8221;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Instead of using a String could this be changed to
Object?&nbsp; We&#8217;ve tested this feature in the past with other systems
and typically for us our &#8220;group&#8221; is not a String.&nbsp; Yes, we
could convert our objects to Strings but I&#8217;m not sure I see the point if
this could just be an Object.<o:p></o:p></p>

</div>

</div>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Fair point, it doesn't have to be a String.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<p class=MsoNormal><br>
<br>
<o:p></o:p></p>

<div>

<div>

<div>

<p class=MsoNormal>&nbsp;Also, I&#8217;m not sure why annotations
wouldn&#8217;t work if the annotation is for the method to invoke to get the
group and not statically defining a group.&nbsp; Other systems I&#8217;ve used
employ this technique.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Annotations are fine as an option (if they work for this
case) but as with my post in the user forum if you were to go this route
I&#8217;d like it if there were an option of defining this as in a
configuration file as well to not put constraints on the object model we
create.<o:p></o:p></p>

</div>

</div>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Again, annotations or a &quot;producer&quot; method could be
additional ways to do this, but none of these remove the need for being able to
do so on the API as above. &nbsp;And if it is on the API, then is there any
real value in allowing annotations/producer methods?<o:p></o:p></p>

</div>

<p class=MsoNormal><br>
<br>
<o:p></o:p></p>

<div>

<div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Bryan<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>&nbsp;</span><o:p></o:p></p>

</div>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in;
border-width:initial;border-color:initial'>

<div>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
class=apple-converted-space><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>&nbsp;</span></span><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'><a
href="mailto:infinispan-dev-bounces@lists.jboss.org">infinispan-dev-bounces@lists.jboss.org</a><span
class=apple-converted-space>&nbsp;</span>[mailto:infinispan-dev-bounces@lists.jboss.org]<span
class=apple-converted-space>&nbsp;</span><b>On Behalf Of<span
class=apple-converted-space>&nbsp;</span></b>Manik Surtani<br>
<b>Sent:</b><span class=apple-converted-space>&nbsp;</span>Monday, March 22,
2010 9:45 AM<br>
<b>To:</b><span class=apple-converted-space>&nbsp;</span>infinispan -Dev List<br>
<b>Subject:</b><span class=apple-converted-space>&nbsp;</span>[infinispan-dev]
A mechanism for users to control data localitywhen using DIST</span><o:p></o:p></p>

</div>

</div>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'>So there have been some
requests for this ability [1], and although I did blog about some strategies to
achieve this [2], one of which Brian plans to employ for HTTP session state in
JBoss AS 6, I think this is something generally useful and a simpler
&quot;user&quot; solution should be offered. &nbsp;&nbsp;Annotations won't work
for a number of reasons (mainly because this affinity information should be
associated with a key instance, not a key class). &nbsp;So here is what I
propose, from an API perspective:<br>
<br>
put(K, V) is overloaded with put(K, V, String group). &nbsp;&quot;group&quot;
is an arbitrary, user-defined string, and it is up to the API user to ensure
these are unique, and related entries are properly grouped.<br>
<br>
Note that this is similar in some ways to another JIRA proposed by Mindaugas
Žakšauskas some months ago: ISPN-312 [3].<br>
<br>
In terms of implementation, I expect we could add a DataAffinityInterceptor
which would:<br>
<br>
* for puts, instead of putting (K, V) in the cache, it would put (group,
AtomicMap) and (K, group) in the cache, and (K, V) in the AtomicMap.
&nbsp;Similar behaviour for other writes.<br>
* for gets, instead of retrieving (K), from the cache, it would retrieve K to
get the group id, and then retrieve the atomic map related to the group before
retrieving the key.<br>
<br>
The effect of this is to hide the complexities of interacting with AtomicMaps
from users by providing a convenience API.<br>
<br>
What do people think?<br>
<br>
Cheers<br>
Manik<br>
<br>
[1]&nbsp;<a href="https://jira.jboss.org/jira/browse/ISPN-359">https://jira.jboss.org/jira/browse/ISPN-359</a><br>
[2]&nbsp;<a
href="http://infinispan.blogspot.com/2009/08/distribution-instead-of-buddy.html">http://infinispan.blogspot.com/2009/08/distribution-instead-of-buddy.html</a><br>
[3]&nbsp;<a href="https://jira.jboss.org/jira/browse/ISPN-312">https://jira.jboss.org/jira/browse/ISPN-312</a><o:p></o:p></p>

<div>

<div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>--</span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>Manik Surtani</span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><a href="mailto:manik@jboss.org">manik@jboss.org</a></span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>Lead, Infinispan</span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>Lead, JBoss Cache</span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><a href="http://www.infinispan.org">http://www.infinispan.org</a></span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><a href="http://www.jbosscache.org">http://www.jbosscache.org</a></span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>&nbsp;</span><o:p></o:p></p>

</div>

</div>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><br>
<br>
<br>
</span><o:p></o:p></p>

</div>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

</div>

<p class=MsoNormal><span style='font-size:13.5pt;font-family:"Helvetica","sans-serif"'>---------------------------------------------------------------------<span
class=apple-converted-space>&nbsp;</span><br>
This transmission (including any attachments) may contain confidential
information, privileged material (including material protected by the
solicitor-client or other applicable privileges), or constitute non-public
information. Any use of this information by anyone other than the intended
recipient is prohibited. If you have received this transmission in error, please
immediately reply to the sender and delete this information from your system.
Use, dissemination, distribution, or reproduction of this transmission by
unintended recipients is not authorized and may be unlawful.<span
class=apple-converted-space>&nbsp;</span>_______________________________________________<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">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>--<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>Manik Surtani<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><a href="mailto:manik@jboss.org">manik@jboss.org</a><o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>Lead, Infinispan<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'>Lead, JBoss Cache<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><a href="http://www.infinispan.org">http://www.infinispan.org</a><o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><a href="http://www.jbosscache.org">http://www.jbosscache.org</a><o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><o:p>&nbsp;</o:p></span></p>

</div>

</div>

<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif";
color:black'><br>
<br>
</span><o:p></o:p></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

--------------------------------------------------------------------- <br>
This transmission (including any attachments) may contain confidential information, privileged material (including material protected by the solicitor-client or other applicable privileges), or constitute non-public information. Any use of this information by anyone other than the intended recipient is prohibited. If you have received this transmission in error, please immediately reply to the sender and delete this information from your system. Use, dissemination, distribution, or reproduction of this transmission by unintended recipients is not authorized and may be unlawful.
</body>

</html>