Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-1821

SEQUENCER2: new impl of total order protocol

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Major Major
    • 3.5
    • None
    • None
    • 0
    • 0% 0%

      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:

      1. A sender sends messages itself, so the sequencer doesn't need to do sending (and potential retransmissions)
      2. Compared to SEQUENCER, the data is only sent and marshalled once (better for large messages)
      3. 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

            rhn-engineering-bban Bela Ban
            rhn-engineering-bban Bela Ban
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: