You are viewing a plain text version of this content. The canonical link for it is here.
Posted to proton@qpid.apache.org by "Ted Ross (JIRA)" <ji...@apache.org> on 2013/11/04 14:24:17 UTC
[jira] [Reopened] (PROTON-401) Ordering issue prevents credit drain
from working properly
[ https://issues.apache.org/jira/browse/PROTON-401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ted Ross reopened PROTON-401:
-----------------------------
I don't believe the proposed solution really works.
An intermediary with many outgoing links will call 'drained' when the link's fifo/queue is empty (i.e. the last message was just sent). It will subsequently call 'offered' when a new message is enqueued.
In order to call 'drained' more frequently, the process would have to use the writability of the link's connection as a trigger. This will lead to very high CPU utilization calling 'drained' repeatedly or will force the developer to compromise with some complicated form of hold-off.
> Ordering issue prevents credit drain from working properly
> ----------------------------------------------------------
>
> Key: PROTON-401
> URL: https://issues.apache.org/jira/browse/PROTON-401
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-c
> Affects Versions: 0.4
> Reporter: Ken Giusti
> Assignee: Ken Giusti
> Attachments: drain-error.patch, drain-hack.patch
>
>
> If the sending link calls pn_link_drained() to indicate that it has send all pending data, and afterwards it receives a Flow frame with drain=true from the peer, then the drain never completes.
> The ordering is the problem: if the flow frame w/drain=true is received _BEFORE_ the sender calls pn_link_drained(), then it works.
--
This message was sent by Atlassian JIRA
(v6.1#6144)