[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:32:48 EDT 2009


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