[jbosscache-dev] Re: Non Blocking State Transfer Status (& Integration with JGroups)

Jason T. Greene jason.greene at redhat.com
Wed Jan 7 12:21:53 EST 2009


Bela Ban wrote:
> 
> 
> Jason T. Greene wrote:
>>
>>> Also, I may be wrong but I believe the UNICAST and NAKACK locks are 
>>> separate, so a thread carrying a unicast state transfer message from 
>>> node A will not block on recipient B because a multicast replication 
>>> message from A is being handled by another thread.)
>>>
>>
>> I am not too worried about the locking, although that is a factor, but 
>> more about a multicast configuration, where you have state transfer 
>> traffic for N transfers hitting the multicast address. Even if 
>> everyone discards the traffic, it still has to be processed in java 
>> land, and it will be alot of traffic.
> 
> Why the multicast address ? State transfer should be between 2 nodes, a 
> provider and a requester, so it should always be unicast. If we bring 
> partial flush into the mix, where we block only the 2 participants in 
> the state transfer, then we should be OK. Not sure if we should do a 
> partial or a full flush though...

Ah! There is my disconnect. I somehow had it in my head that the jgroups 
UDP transport used a multicast socket for everything, and that UNICAST 
packets where just emulated on top of that. I should have looked at the 
code. That pretty much eliminates my concern. Although IMO a bare tcp 
connection would still be the most optimal form of transferring large 
state to a single node since the kernel and the hardware is doing all 
the work. That can be saved for a future optimization though ;)

-- 
Jason T. Greene
JBoss, a division of Red Hat



More information about the jbosscache-dev mailing list