Protocol to discover subgroups; e.g., existing due to a network partition (that healed). Example: group
{p,q,r,s,t,u,v,w} is split into 3 subgroups {p,q}, {r,s,t,u} and {v,w}. This protocol will eventually send
a MERGE event with the coordinators of each subgroup up the stack: {p,r,v}. Note that - depending on the time
of subgroup discovery - there could also be 2 MERGE events, which first join 2 of the subgroups, and then the
resulting group to the last subgroup. The real work of merging the subgroups into one larger group is done
somewhere above this protocol (typically in the GMS protocol).
This protocol works as follows:
- If coordinator: periodically retrieve the initial membership (using the FIND_INITIAL_MBRS event provided e.g.
by PING or TCPPING protocols. This list contains {coord,addr} pairs.
- If there is more than 1 coordinator:
- Get all coordinators
- Create a MERGE event with the list of coordinators as argument
- Send the event up the stack
Requires: FIND_INITIAL_MBRS event from below
Provides: sends MERGE event with list of coordinators up the stack
getMaxInterval
public long getMaxInterval()
getMinInterval
public long getMinInterval()
setMaxInterval
public void setMaxInterval(long l)
setMinInterval
public void setMinInterval(long i)
startDownHandler
public void startDownHandler()
This prevents the down-handler thread to be created, which is not needed in the protocol.
DON'T REMOVE !
- startDownHandler in interface Protocol
startUpHandler
public void startUpHandler()
This prevents the up-handler thread to be created, which is not needed in the protocol.
DON'T REMOVE !
- startUpHandler in interface Protocol