[
https://issues.jboss.org/browse/JGRP-1461?page=com.atlassian.jira.plugin....
]
Bela Ban commented on JGRP-1461:
--------------------------------
Hmm, with respect to the same thread sending messages m1 and m2, m1 will always be
delivered before m2 because the first send() goes down the stack and assign a seqno in
UNICAST that's lower than the one for m2. However, if m1 is sent by thread t1 and m2
by t2, and both are concurrent, then it is undefined which message will be delivered
first: the order depends on which messages reaches UNICAST first, but that's fine for
concurrent messages.
I'll therefore remove the seqno_lock from SEQUENCER and just dish out monotonically
increasing *unique* seqnos: say m1 gets #5 and m2 gets #6. If message #6 happens to reach
UNICAST first, the forward to the coord means that we'll deliver message m2 *before*
m1, but that's fine because the messages were sent concurrently, by different
threads.
So, as seqnos are now not used to establish order (this is done by forwarding a message to
the coord), but only to weed out duplicates, we might see m2 (#6) before m1 (#5). A
bounded set at each receiver is used to weed out dupes.
SEQUENCER leaks sequence numbers
--------------------------------
Key: JGRP-1461
URL:
https://issues.jboss.org/browse/JGRP-1461
Project: JGroups
Issue Type: Bug
Affects Versions: 3.0.9, 3.1
Reporter: David Hotham
Assignee: Bela Ban
Fix For: 3.0.10, 3.1
As noted in JGRP-1458, it looks as though SEQUENCER always thinks that sequence numbers
must start at zero. But a member who joins a group after some messages have already been
broadcast may never receive sequence number zero. So, I think, his SeqnoTable will grow
indefinitely.
Note that this one's mostly through code reading. I think I'm right; but I'm
happy to be told otherwise!
Pull request to follow shortly.
--
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