VTC for connect_timeout?
Geoff Simmons
geoff at uplex.de
Sun Nov 15 18:58:21 CET 2015
Hello all,
I noticed that there is no test case for backend connect_timeout among
the Varnish *.vtc's, so I tried to cook one up for a VMOD, but I can't
seem to get a backend connection to fail due to the timeout when I think
it should.
The attached VTC just uses standard Varnish, and doesn't pass. I can't
see what could be wrong about VTCP_connect(), so I assume that my
reasoning about the test case must be flawed.
The first request gets "Connection: close" from the backend, and I can
see BackendClose in the log.
Then the client sends the second request:
** c1 0.6 === txreq
**** c1 0.6 txreq| GET / HTTP/1.1\r\n
**** c1 0.6 txreq| \r\n
** c1 0.6 === rxresp
But the backend delays 1.5 seconds, which is longer than
connect_timeout, before accepting again:
** s1 0.6 === delay 1.5
*** s1 0.6 delaying 1.5 second(s)
[...]
** s1 2.1 === accept
**** s1 2.1 Accepting
*** s1 2.1 Accepted socket fd is 4
** s1 2.1 === rxreq
So I thought the timeout should elapse and the response should be 503,
but it's 200, no failure.
How am I getting this wrong?
Thanks,
Geoff
--
** * * UPLEX - Nils Goroll Systemoptimierung
Scheffelstraße 32
22301 Hamburg
Tel +49 40 2880 5731
Mob +49 176 636 90917
Fax +49 40 42949753
http://uplex.de
-------------- next part --------------
varnishtest "test connect_timeout"
server s1 {
rxreq
txresp -hdr "Connection: close"
delay 1.5
accept
rxreq
txresp
} -start
varnish v1 -vcl {
backend default { .host = "${s1_addr}"; .port = "${s1_port}";
.connect_timeout = 1s;
}
sub vcl_recv {
return(pass);
}
sub vcl_backend_fetch {
set bereq.connect_timeout = 1s;
}
sub vcl_backend_response {
set beresp.do_stream = false;
}
} -start
varnish v1 -cliok "param.set connect_timeout 1"
client c1 {
txreq
rxresp
expect resp.status == 200
txreq
rxresp
expect resp.status == 503
} -run
server s1 {
rxreq
txresp -hdr "Connection: close"
delay 0.5
accept
rxreq
txresp
} -start
client c1 {
txreq
rxresp
expect resp.status == 200
txreq
rxresp
expect resp.status == 200
} -run
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-dev/attachments/20151115/542b112c/attachment.pgp>
More information about the varnish-dev
mailing list