[jboss-jira] [JBoss JIRA] Commented: (JGRP-952) MERGE: UNICAST can lose messages on merging

Bela Ban (JIRA) jira-events at lists.jboss.org
Tue Apr 7 12:37:35 EDT 2009


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

Bela Ban commented on JGRP-952:
-------------------------------

Alternative to first solution:
- When a message is received and cannot be *delivered* (e.g. #5 is received but we haven't received #4 yet), then DO NOT ack it ! This means, A will keep retransmitting #4 and #5, and retransmission will only stop for #4 when it has been delivered at B, and the same for #5.
- This effectively acks a message only on remove(), not add() !
- In the above case, when A: {A,B,C} and B,C: {B,C}, then A would continue retransmitting messages #4 and #5 to C until either a view was installed which excluded C, or a merge !

> MERGE: UNICAST can lose messages on merging
> -------------------------------------------
>
>                 Key: JGRP-952
>                 URL: https://jira.jboss.org/jira/browse/JGRP-952
>             Project: JGroups
>          Issue Type: Bug
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 2.6.10, 2.8
>
>
> The following use case loses messages:
> - A sends #5 to B
> - B expects #4 from A, but adds #5 and acks it
> - A receives the ack(#5) and removes #5 from its sender window
> - Now there is a partition such that B trashes its connection window form A, but A keeps its window for B (A: {A,B}, B: {B})
> - The partition heals and A sends #6 to B
> - B asks A for its lowest seqno, A resends #4 (with a conn_id)
> - B creates a receiver window for A with seqno=#4
> - A resends #6
> - B adds #6 to its window, but doesn't deliver it because it is missing #5
> --> However, A will NEVER resend #5 because the ack(#5) from B removed #5 from A's sender window !
> ==> Possible SOLUTION: when A gets the SEND_FIRST_SEQNO and there are (unacked) messages in A's sender window, and they are not in order, then A will trash its connection window and copy the pending messages into the new window (with new seqnos !) before sending #1 (with conn_id)
> ==> This solution might lose the original message #5, but that's better than B never being able to deliver any messages anymore !

-- 
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