[jboss-jira] [JBoss JIRA] (JGRP-2462) TransferQueueBundler: drop messages if queue is full
Bela Ban (Jira)
issues at jboss.org
Wed Mar 25 12:30:35 EDT 2020
[ https://issues.redhat.com/browse/JGRP-2462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14008963#comment-14008963 ]
Bela Ban edited comment on JGRP-2462 at 3/25/20 12:28 PM:
----------------------------------------------------------
Protocols such as RED or Blue (\[2\]) have to know the queue's capacity and the current size, e.g. to maintain an average size, which is used to compute the probability with which a message is dropped. The capacity is fixed and can be fetched via {{TP.getBundlerCapacity()}}.
Seems like adding {{getQueueSize()}} to {{Bundler}} would allow us to implement random early detection in a separate protocol (e.g. {{RED}}). This is *not* the same as {{Bundler.size()}}; we cannot use the latter as it returns the total number of _unsent_ messages.
\[2\] https://en.wikipedia.org/wiki/Blue_(queue_management_algorithm)
was (Author: belaban):
Protocols such as RED or Blue (\[2\]) have to know the queue's capacity and the current size, e.g. to maintain an average size, which is used to compute the probability with which a message is dropped. The capacity is fixed and can be fetched via {{TP.getBundlerCapacity()}}.
Seems like adding {{getQueueSize()}} to {{Bundler}} would allow us to implement random early detection in a separate protocol (e.g. {{RED}}). This is *not* the same as {{Bundler.size()}}; we cannot use the latter as it returns the total number of _unsent_ messages.
\[2\\ https://en.wikipedia.org/wiki/Blue_(queue_management_algorithm)
> TransferQueueBundler: drop messages if queue is full
> ----------------------------------------------------
>
> Key: JGRP-2462
> URL: https://issues.redhat.com/browse/JGRP-2462
> Project: JGroups
> Issue Type: Feature Request
> Reporter: Bela Ban
> Assignee: Bela Ban
> Priority: Major
> Fix For: 4.2.2, 5.0.0.Alpha4
>
>
> When a bundler (like {{TransferQueueBundler}}) has a full queue, the senders will block.
> This can happen for example when the TCP {{send}} blocks due to a full send-window.
> Retransmission requests and responses compound the problem when the TQB's queue is full.
> Therefore, in addition to blocking, we should add an option to _drop_ packets when the queue is full. Investigate whether we could use some priority based scheme, which drops non-important messages first.
> Also investigate whether senders can selectively be unblocked when the queue is full, to either drop or add their messages. This could be done for example by removing elements from the queue, using the aformentioned filter.
> Look at random early detection )\[1\]) for inspiration.
> \[1\] https://en.wikipedia.org/wiki/Random_early_detection
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the jboss-jira
mailing list