[Spread-users] join protocol

John Lane Schultz jschultz at spreadconcepts.com
Mon Apr 30 10:34:04 EDT 2007

Isabel Muñoz wrote:
> Hi,
> I tried the following test using the fl_user.c example:
> 0. X is an empty group
> 1. process A joins group X
> 2. A receives a regular membership message
> 3. process B joins group X
> 4. A receives a flush request
> 5. A sends flush_ok
> 6. A blocks waiting for the new membership message
> 7. B receives the new membership message
> 8. A unblocks and receiving the membership message
> It seems A doesn´t unblock (step 8) until B receives the regular 
> membership message (step 7).
> Why A depends on B for receiving the new membership message?

A doesn't wait for B to receive its membership message.  A does wait until it 
receives a message from B (a flush_ok) agreeing to join a new membership.  Since 
B is joining the group for the first time, this message is sent the moment B 
gets notice of participating in the group (i.e. - it also sends a flush_ok ASAP).

Once a process sends a flush_ok they are agreeing to end their involvement in 
their previous membership and to join a new membership.  New memberships are 
only established once all the currently connected members agree to join the new 

If you don't want this behavior, which has its perks and its drawbacks, then you 
can try regular Spread, which simply delivers membership changes in-stream 
without waiting for any agreement between members.

> What is the order of membership message delivery for join?

I'm not sure what you are asking.  The sequence of events you listed above is 
what happens when a join occurs.


John Schultz
Spread Concepts LLC
Phn: 443 838 2200
Fax: 301 560 8875

More information about the Spread-users mailing list