[Spread-users] replicated state machine with spread
John Lane Schultz
jschultz at spreadconcepts.com
Wed Feb 27 12:32:26 EST 2008
Currently, there is no Java interface to the FL_* calls. However, a JNI
wrapper wouldn't be too hard to implement.
It sounds like you are on a good track with the method you propose.
Good luck! ;)
Cheers!
John
---
John Lane Schultz
Spread Concepts LLC
Phn: 443 838 2200
Fax: 301 560 8875
Wednesday, February 27, 2008, 11:18:49 AM, you wrote:
> Thanks for the quick reply!
> That was basically my suspicion, since Flush Spread is actually plain
> Virtual Synchrony, and closed group semantics are needed so that
> senders can be blocked during view changes... Actually we are using
> the Java API, so is there any way for us to use Flush Spread at all?
> More generally, how would one implement a replicated state machine
> using basic Spread...? I was thinking that new members could buffer
> all incoming messages until such time as they get a state transfer
> (which would need to include the id (lamport time) of the last message
> applied to the state) from the leader, install that state, and then
> apply all buffered messages, which have not already been applied to
> the state. Senders, including the leader, would need to send messages
> using the AGREED semantics. Hmm, I wonder if that would work...
> Cheers,
> Dan
> On Wed, Feb 27, 2008 at 10:48 AM, John Lane Schultz
> <jschultz at spreadconcepts.com> wrote:
>> In basic spread (SP_* interface) there is no way to guarantee
>> what is the first message that a new member will deliver.
>>
>> However, you can implement this behavior if you use the flush interface (FL_*
>> interface). The problem with this approach though is that the flush
>> interface only supports closed group semantics, which means your
>> senders would also have to join the group in question.
>>
>> If that is possible, then after a flush request, flush ok and the subsequent
>> membership is delivered have your leader send the synchronization message(s) and have
>> all other senders wait until they get said message(s). All of this
>> will get a tricky though if there are cascading group changes around the
>> time of the join.
>>
>> Cheers!
>> John
>>
>> ---
>> John Lane Schultz
>> Spread Concepts LLC
>> Phn: 443 838 2200
>> Fax: 301 560 8875
>>
>>
>>
>> Wednesday, February 27, 2008, 10:23:13 AM, you wrote:
>>
>> > Hi all,
>>
>> > I am implementing a replicated state machine using Spread (Java API)
>> > and I would like to know how I can do a proper state transfer when a
>> > new replica joins the group. (New replica joins, it has no state, it
>> > must get a copy of the current state from an existing member, and
>> > then all replicas must process all input messages in the same order.)
>> > Is it possible to guarantee that a certain message (from the group
>> > leader) is delivered first after a view change, before any other
>> > messages? In my system, I have several senders (which are in fact
>> > not part of the spread group) and two receivers, which implement the
>> > RSM.
>>
>> > Cheers,
>> > Dan
>>
>> > _______________________________________________
>> > Spread-users mailing list
>> > Spread-users at lists.spread.org
>> > http://lists.spread.org/mailman/listinfo/spread-users
>>
>>
>> _______________________________________________
>> Spread-users mailing list
>> Spread-users at lists.spread.org
>> http://lists.spread.org/mailman/listinfo/spread-users
>>
> _______________________________________________
> 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