[ 
https://issues.apache.org/jira/browse/TS-3087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14140468#comment-14140468
 ] 

ASF subversion and git services commented on TS-3087:
-----------------------------------------------------

Commit 4a143e584a000d0d591ef323e0789ae80de34b1a in trafficserver's branch 
refs/heads/master from [~amc]
[ https://git-wip-us.apache.org/repos/asf?p=trafficserver.git;h=4a143e5 ]

TS-3087: Fix flow control stall on low water marks.


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

Reply via email to