[
https://issues.apache.org/jira/browse/PROTON-401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13812978#comment-13812978
]
Ted Ross commented on PROTON-401:
---------------------------------
My code only calls pn_link_drained once when the output buffer empties.
Because of this issue, subsequent drain requests (like from
qpid::messaging::Receiver::fetch) are not responded to and hang (even if there
is a timeout).
Since I'm doing the full output processing for every IO event, it's possible
that I may have a relatively easy workaround for this. Currently, I don't
always re-process the connector in proton after calling pn_link_drained.
> 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.5
> Reporter: Ken Giusti
> Assignee: Rafael H. Schloming
> Fix For: 0.6
>
> 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)