[Spread-users] Blocking on membership changes

Steven Dake sdake at mvista.com
Sun Aug 8 21:09:30 EDT 2004


Paul

I am using a protocol similiar to spread in an open source project
(developer.osdl.org/dev/openais) and I have the same problem.

I intend to solve the problem by having three priority queues of
messages.  The priorities are
PRIO_RECOVERY
PRIO_HIGH
PRIO_LOW

Messages that are used to recover state after a merge are sent with
PRIO_RECOVERY priority.  After the configuration change is installed,
every processor sends only PRIO_RECOVERY messages.  Once a processor has
sent all of its PRIO_RECOVERY messages, it sends an "unblock this
processor" message (with PRIO_RECOVERY priority using the ring ordering
protocol).  When the unblock message is received, a table of unblocked
ips is kept and the unblock is added to the table.  The table is checked
to see if all processors in the new configuration have unblocked.  Once
that is true, the processor begins sending messages that are PRIO_HIGH
or PRIO_LOW.  This state machine is replicated on every processor in the
same fashion.

You could implement this approach in spread or wait for the code in
openais to do this.  Without this sort of approach, recovery of a
distributed state machine is very difficult because messages can be
queued before the configuration change, but which are delivered in the
new configuration.  This problem causes a distributed state machine to
behave poorly during configuration changes.

Regards
-steve

On Fri, 2004-08-06 at 10:08, Paul Rubel wrote:
> Hello,
>  
> We are currently using spread to communicate between a group of
> servers. If a server comes into the group we would like to send the
> server some state before it (or other servers) processes any other
> "regular" messages. Our vision is to block other messages while we
> reconcile the state. Does spread have support for anything like this?
>           thank you, 
>             Paul
> 
> _______________________________________________
> Spread-users mailing list
> Spread-users at lists.spread.org
> http://lists.spread.org/mailman/listinfo/spread-users





More information about the Spread-users mailing list