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

Mark Harrison commented on TS-2368:
-----------------------------------

It is.

I'm being stupid and was looking at things at a much too low level.

> read while writer functionality not working
> -------------------------------------------
>
>                 Key: TS-2368
>                 URL: https://issues.apache.org/jira/browse/TS-2368
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Cache
>            Reporter: Mark Harrison
>
> I'm seeing some unusual behavior when trying to use the read_while_writer 
> functionality in ATS 4.0.2.
> My test case is a simple HTTP server that on each request will sleep for 5 
> seconds and then return a response (simulating a slow/overloaded origin 
> server). My test is to run curl against a URL and immediately (approx 1 
> second later) run the same curl in another window.
> Curl command: curl -v -x 127.0.0.1:80 http://foo.com/5
> (a remap entry is in place for foo.com to the origin server)
> The response is cacheable - I set Cache-Control: max-age headers and see cS 
> in the via header (or cH when there's a cache hit on subsequent requests).
> I have proxy.config.cache.enable_read_while_writer set to 1 in records.config.
> The expected behavior is that the second request will hang until the first 
> request is complete, and both with return at the same time with the data, and 
> that the origin server will see only one request.
> The observed behavior is that both requests take 5 seconds from starting 
> them, and the origin server sees two requests.
> After much hunting around running ATS under gdb, I spotted where I think the 
> issue is (although not why):
> iocore/cache/CacheRead.cc line 205: if (!w->closed && 
> !cache_config_read_while_writer)
> ATS thinks that cache_config_read_while_writer is 0 at this point, despite it 
> being set in the config file. I discovered this by setting a breakpoint on 
> CacheVC::openReadChooseWriter and stepping through. This behavior also 
> happens if I compile with -O0.
> If I change the code to ignore the value of cache_config_read_while_writer 
> (i.e. comment out that if statement), then I get the expected behavior and 
> read_while_writer appears to work.
> My test machine is a vagrant vm, running centos 6.3, and ATS was compiled 
> with ./configure CXXFLAGS=-O0 CFLAGS=-O0 --enable-layout=Gentoo 
> --enable-experimental-plugins --libdir=/usr/lib64/trafficserver 
> --with-tcl=/usr/lib64 --with-user=ats --with-group=ats
> (I also compiled without the CXXFLAGS and CFLAGS - I added those in to make 
> working with gdb easier, but the behavior was the same).



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to