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

Galder Zamarreno galder at redhat.com
Thu Oct 29 11:40:51 EDT 2009


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,
>>
>

-- 
Galder Zamarreño
Sr. Software Engineer
Infinispan, JBoss Cache



More information about the infinispan-dev mailing list