David Hotham created JGRP-1458:
----------------------------------
Summary: SEQUENCER delivers the same message more than once
Key: JGRP-1458
URL:
https://issues.jboss.org/browse/JGRP-1458
Project: JGroups
Issue Type: Bug
Affects Versions: 3.0.9
Reporter: David Hotham
Assignee: Bela Ban
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?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira