[jboss-jira] [JBoss JIRA] Commented: (JGRP-1098) NAKACK: retransmitted OOB messages are retransmitted as regular messages

Bela Ban (JIRA) jira-events at lists.jboss.org
Thu Nov 12 11:31:05 EST 2009


    [ https://jira.jboss.org/jira/browse/JGRP-1098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12494365#action_12494365 ] 

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

        



More information about the jboss-jira mailing list