[
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)