Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-1835

DONT_LOOPBACK flag causes credit exhaustion in MFC

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 3.5
    • 3.5
    • None

      When a message M is multicast by sender P and has the DONT_LOOPBACK transient flag set, it will not get looped back up the stack.
      When M passes MFC on the way down, it decrements the sent credits for P. When M is received by P, the received credits are decrements and possibly credits are sent back to P.
      However, M is never received by P because DONT_LOOPBACK causes it to be dropped.
      This results in credits for P getting exhausted if we send many messages. Credit requests sent by P (every 5 s by default) do replenish P's credits, but if P sends many messages this is not enough, and slows things down.
      SOLUTION:

      1. Don't use DONT_LOOPBACK in upper protocols or application space. JGroups itself uses it for discovery (lower protocols)
      2. Don't maintain credits for self; ie. P doesn't decrement or replenish credits for itself, only for others
        • Make sure P doesn't starve processing of messages from all other members (who use flow control) by circumventing flow control...
      3. When sending a message tagged as DONT_LOOPBACK, decrement the received credits immediately and send new credits if needed

              rhn-engineering-bban Bela Ban
              rhn-engineering-bban Bela Ban
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: