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)