[jboss-jira] [JBoss JIRA] (JGRP-2172) Non-blocking flow control
Radim Vansa (JIRA)
issues at jboss.org
Mon Jun 19 07:58:00 EDT 2017
[ https://issues.jboss.org/browse/JGRP-2172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13422959#comment-13422959 ]
Radim Vansa commented on JGRP-2172:
-----------------------------------
[~belaban] Yes, I think so. It's a bit tempting to exclude OOB messages from this rule, however I am afraid that this could lead to long message starvation: imagine that one long and many short messages are sent: it he big one does not have enough credits, it will wait. If the replenishment is not big enough to allow this long one to be sent as well, it will stay there - the short messages could cut their small portion of credits, though, but when another replenishement comes, since the credit count has dropped, there still won't be enough credits...
> Non-blocking flow control
> -------------------------
>
> Key: JGRP-2172
> URL: https://issues.jboss.org/browse/JGRP-2172
> Project: JGroups
> Issue Type: Feature Request
> Reporter: Bela Ban
> Assignee: Bela Ban
> Fix For: 4.0.4
>
>
> Sending a message through FlowControl (UFC, MFC) should not block if {{Message.Flag.NB_FC}} (non-blocking flow control) is set.
> Instead, the message should be added to a queue (bounded if {{max_size}} > 0, else unbounded). The max queue size is given in bytes, so we can estimate what the memory penalty for reaching that size would be (if bounded).
> The queued messages are sent when credits arrive. TBD: when credits arrive, should blocked threads or queued messages be released first?
> Non-blocking flow control can be used by both external and internal threads.
> If the queue is unbounded, then it is the responsibility of the application (e.g. Infinispan) to make sure the queue doesn't grow to an untenable size.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the jboss-jira
mailing list