[jboss-jira] [JBoss JIRA] (JGRP-1396) NAKACK2: merge NakReceiverWindow and Retransmitter

Bela Ban (Commented) (JIRA) jira-events at lists.jboss.org
Tue Dec 27 03:39:09 EST 2011


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

Bela Ban commented on JGRP-1396:
--------------------------------

Since the RingBuffer's low seqno is only advanced on a stable() message, we need to make sure that adding a message to the buffer doesn't block forever (the sender *has* to block and cannot simply discard the message when the buffer is full, as it might need to retransmit it !).

For example, if we have STABLE initiate a stability round after 10MB have been received, and the ring buffer has a capacity of 10'000, then the following could happen:
- A sender sends 10'000 messages of 100 bytes / message and blocks
- STABLE has received 1MB worth of data, but doesn't trigger a stability round yet because it waits for 10MB
--> The sender blocks until STABLE runs its periodical stability round (every 50 secs by default) !

SOLUTION:
- When the ring buffer of a sender P exceeds a certain (configurable) threshold (say 75% by default), then we run the following protocol:
- P multicasts its highest delivered (HD) seqno
- Every member of the current view responds with the P's HD, as seen by them
- When P has collected all answers, it computes the minimum HD (MHD) for P from all responses and sends a STABILITY message
- Every member now calls stable(MHD) for P and therefore advances HD
--> The goal is for a sender never to block
--> This additional protocol round is only needed for the above scenario. In most cases, the STABLE protocol should advance the low seqno of the ring buffer before the capacity is exceeded !


                
> NAKACK2: merge NakReceiverWindow and Retransmitter
> --------------------------------------------------
>
>                 Key: JGRP-1396
>                 URL: https://issues.jboss.org/browse/JGRP-1396
>             Project: JGroups
>          Issue Type: Enhancement
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 3.1
>
>
> Both NakReceiverWindow and Retransmitter use their own data structures to keep a list of messages received (NRW) and seqnos to be retransmitted (Retrasmitter). This is redundant and costly memory-wise.
> I suggest let's merge the 2 classes, or at least let them share the data structure which keeps track of received messages.
> Suggestion II: create a ring buffer with a (changeable) capacity that keeps track of received messages and messages to be retransmitted.

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

        


More information about the jboss-jira mailing list