[infinispan-dev] [jgroups-dev] StressTest: Can JGroups provide a callback to do marshalling after real_dests have been calculated?

Bela Ban bban at redhat.com
Thu Oct 29 11:48:37 EDT 2009


No, I don't think I'll be able to do that, not with the open issues I 
have to 2.8 and the fact I want to release 2.8.0.GA soon.

Can't you insert simple code into Infinispan which checks whether a 
member is the only member in the cluster and returns if true ? This code 
could then be removed in 2.9

Galder Zamarreno wrote:
> Btw, any chance of getting this done for 2.8?
>
> It would enhance performance since we would no longer be doing 
> unnecessary marshalling when we're the target of the op and the current 
> solution (ISPN-237) is wasteful.
>
> On 10/29/2009 04:36 PM, Galder Zamarreno wrote:
>   
>> Sure, I'll do it in a sec.
>>
>> Manik FYI, I'm gonna revert the changes for
>> https://jira.jboss.org/jira/browse/ISPN-237.
>>
>> On 10/29/2009 04:32 PM, Bela Ban wrote:
>>     
>>> Sure, why don't you create a JIRA (for 2.9) ?
>>>
>>> Galder Zamarreno wrote:
>>>       
>>>> Hi Bela&  co,
>>>>
>>>> While investigating your stress test, I've found a few interesting
>>>> things. I'm gonna split in 2 emails:
>>>>
>>>> 1.- First of all, a week ago filled
>>>> https://jira.jboss.org/jira/browse/ISPN-237 jira in order for dist
>>>> commands that should only affect the local machine not to go remove.
>>>> While investigating your stress test, I've found out that JGroups'
>>>> MessageDispatcher.castMessage already does that!
>>>>
>>>> if(tmp != null&&  tmp.getOpt(Channel.LOCAL).equals(Boolean.FALSE)) {
>>>> if(local_addr == null) {
>>>> local_addr=tmp.getAddress();
>>>> }
>>>> if(local_addr != null) {
>>>> real_dests.removeElement(local_addr);
>>>> }
>>>> }
>>>>
>>>> That code empties the real_dests if the target is the local address.
>>>> So, you're probably wondering why I filled
>>>> https://jira.jboss.org/jira/browse/ISPN-237? It's because marshalling
>>>> happens before the code above gets executed. In fact, it happens at
>>>> the beginning of ReplicationTask.call() and the JGroups optimization
>>>> happens when castMessage() is called from ReplicationTask.call().
>>>>
>>>> So, I think my fix for https://jira.jboss.org/jira/browse/ISPN-237 is
>>>> not optimal. JGroups already knows when the call should stay local, so
>>>> ISPN should need to do this calculation again, it's wasteful code. The
>>>> real fix would be to somehow be able to do marshalling only if the
>>>> code in MessageDispatcher.castMessage() said that real_dests was not
>>>> empty.
>>>>
>>>> Bela, do you think JGroups could be enhanced to have a callback after
>>>> the code shown above where we can invoke marshalling?
>>>>
>>>> Cheers,
>>>>         
>
>   

-- 
Bela Ban
Lead JGroups / Clustering Team
JBoss




More information about the infinispan-dev mailing list