]
Bela Ban updated JGRP-1821:
---------------------------
Fix Version/s: 3.5
(was: 4.1)
SEQUENCER2: new impl of total order protocol
--------------------------------------------
Key: JGRP-1821
URL:
https://issues.jboss.org/browse/JGRP-1821
Project: JGroups
Issue Type: Feature Request
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 3.5
When in {{SEQUENCER}} a member P wants to send a multicast message M, it unicasts it to
the coordinator, who multicasts it on behalf of P.
The new impl {{SEQUENCER2}} is different:
* P asks the coord for a seqno
* The coord responds with a (monotonically increasing) seqno
* P multicasts M with that seqno
* Everyone uses one global {{Table}} to deliver messages and weed out duplicates
Advantages:
# A sender sends messages itself, so the sequencer doesn't need to do sending (and
potential retransmissions)
# Compared to {{SEQUENCER}}, the data is only sent and marshalled once (better for large
messages)
# A sender grabs entire ranges of seqnos, so this should be efficient
The edge case handling though requires some work, e.g.
* A member B crashes after having received a seqno (e.g. 4)
** The sequencer will give out 5 next, but since nobody received 4, all subsequent
messages will get stuck, waiting for 4
* The sequencer (coord) dies or leaves
** The next-in-line probably needs to run some reconciliation protocol, asking all
members for their highest received seqnos
** Messages like 4 would get marked as dummy, removed from table and dropped