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

SEQUENCER delivers the same message more than once

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 3.0.10, 3.1
    • 3.0.9
    • None

      This issue is certainly exposed by my running with a retransmit task in SEQUENCER (per JGRP-1449). However, I think that it could be hit anyway at a change of view; and I'm sure it's a bug!

      In SeqnoTable$Entry.add(seqno), the final branch "seqno > next_to_receive" always returns true. But it should return the return code from seqnos.add(seqno) (ie, false if the seqno has already been added).

      The consequence is that Sequencer's received_table.add() returns true even for a message that has already been delivered, so the message is delivered a second time.

      Looking at this code raised another question, for which I should maybe raise a separate ticket. Let me know if you'd prefer me to do so.

      I think that when SeqnoTable.add() creates a new Entry, it always creates Entry(0) (because SeqnoTable.next_to_receive is always 0). Is that true? and if so, is it correct?

      A might join a group long after some other member B has already broadcast the messages with sequence numbers 0,1,2, say. Then since A will never receive those messages, isn't it going to end up with an Entry for B in which the Set of seqnos just grows indefinitely?

      It looks to me as though maybe when it creates a new entry it should do so with Entry(seqno) rather than Entry(next_to_receive). Or have I misunderstood something?

              rhn-engineering-bban Bela Ban
              dimbleby David Hotham (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: