[
https://issues.apache.org/jira/browse/TS-3087?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alan M. Carroll resolved TS-3087.
---------------------------------
Resolution: Fixed
Fix Version/s: 5.2.0
Assignee: Alan M. Carroll
> Flow control can stall at low water mark values
> -----------------------------------------------
>
> Key: TS-3087
> URL: https://issues.apache.org/jira/browse/TS-3087
> Project: Traffic Server
> Issue Type: Bug
> Components: Core
> Reporter: Alan M. Carroll
> Assignee: Alan M. Carroll
> Fix For: 5.2.0
>
>
> If the flow control high water mark is set to be smaller than the TCP socket
> buffer size, flow control can stall out. The root cause is that the
> UnixNetVConnection will generate the WRITE_READY event before writing to the
> socket. If the amount of data in the buffers is larger than the water mark
> (throttling the connection) and small enough to all be written at once to the
> socket then the buffer will empty but no event will be generated to
> unthrottle the connection.
> To fix this, I added the ability to force an event on the write buffer
> becoming empty for a NetVConnection. The flow control logic sets this in the
> cases where this can happen and therefore gets an event in which it can
> detect the buffer is empty and unthrottle.
> To see this, simply set the flow control water marks to a small value such as
> 25000 and fetch a medium sized (~200K) object. Most of the time the request
> will stall. It will stall more often if cache is disabled (because the
> CacheVC generates a lot of events).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)