[
https://jira.jboss.org/jira/browse/JGRP-1098?page=com.atlassian.jira.plug...
]
Bela Ban commented on JGRP-1098:
--------------------------------
OK, we need to wrap the retransmitted message because if we send the retransmitted message
to the requester (unicast instead of multicast), then the destination is not multicast,
therefore the message is handled by UNICAST rather than NAKACK !
Example:
- B multicasts message 22
- A receive B:22. The message's dest is null and the src is B
- C asks *A* for retransmission of B:22
- If we simply retransmitted (a copy of) B:22 (with dest=null and src=B), everything would
be fine
- However, if we copy the message and send it to B, the msgs' dest would be C !
==> On C, the message would get handled both by NAKACK (because we have a NakAckHeader
attached to it) *and* UNICAST (because the dest is not a multicast dest or null) !
NAKACK: retransmitted OOB messages are retransmitted as regular
messages
------------------------------------------------------------------------
Key: JGRP-1098
URL:
https://jira.jboss.org/jira/browse/JGRP-1098
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.8
If P sends OOB messages 1-10, and Q only receives 1 and 2, and the later receives P:11,
then it'll ask P for retransmission of messages P:3 - P:10. P *wraps* each
retransmitted message and sends it as *regular* message to Q. Because regular messages are
handled sequentially, by the regular thread pool, each message will be sent up to NAKACK
(where it is unwrapped and sent further up) sequentially, destroying the semantics of OOB
messages with concurrent and unordered delivery !
SOLUTION: check whether an original message is OOB and - if so - set the wrapping message
as OOB, too.
TODO: check why we actually wrap retransmitted messages in NAKACk (we don't do it in
UNICAST) ! Maybe this is leftover code from the days when retransmitted messages were
bundled in NAKACK itself ? We should be able to simply copy the retransmitted message and
send it to the requester (or all if mcast_xmit=true).
TODO: why are we setting the msg.setSrc() in a retransmitted message ?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira