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

MaxOneThreadPerSender: add option to block on full queue

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Unresolved
    • Icon: Major Major
    • 5.5
    • None
    • None
    • False
    • None
    • False

      MaxOneThreadPerSender has max_buffer_size, acting as a message queue when the delivery thread is running: when 0, the queue is unbounded. When N >0, then messages are dropped when the queue size is >= N.

      An unbounded queue can lead to OOMEs: when the sender is constantly faster than the receiver, the queue will grow. Note that flow control will not kick in, as the message already passed UFC/MFC.

      Dropping messages OTOH is slowing things down and causes retransmission. In addition, stacks without retransmission protocols (UNICAST3, NAKACK2) [1] will lose messages.

      An additional option is to block when the queue is full: this will slow down the sending of credits to the senders, therefore throttling the senders. Add an option block_on_full_queue to MaxOneThreadPerSender: when true, threads trying to add messages will block instead of dropping messages when the queue is full (N > 0; when N==0, the queue will still be unbounded).

      [1] https://issues.redhat.com/browse/JGRP-2566

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

                Created:
                Updated: