Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Varnish: Bugs
#965: Restarting a request in vcl_miss causes Varnish client crash.
 

Index | Next | Previous | View Flat


varnish-bugs at varnish-cache

Jul 20, 2011, 3:49 PM


Views: 381
Permalink
#965: Restarting a request in vcl_miss causes Varnish client crash.

#965: Restarting a request in vcl_miss causes Varnish client crash.
-------------------+--------------------------------------------------------
Reporter: david | Type: defect
Status: new | Priority: normal
Milestone: | Component: build
Version: 3.0.0 | Severity: normal
Keywords: |
-------------------+--------------------------------------------------------
Hello!

I've done extensive testing on this, and I believe I've found a bug in
Varnish. The VCL below loads correctly, but causes the Varnish client to
crash after 1-2 requests. The backstory is available in the forums here
https://www.varnish-cache.org/forum/topic/65 - if you have any questions
that are not answered in that post, please ask away; I'd love to explain
and make more sense of what I'm trying to do. This isn't the exact VCL I'd
use in production, it is a minimalistic version that is able to reproduce
the crash:

sub vcl_recv {
if (!req.http.X-Forwarded-For) { set req.http.X-Forwarded-For =
client.ip; }
if (req.http.X-Banned == "check") { remove req.http.X-Banned; }
elseif (req.restarts == 0) {
set req.http.X-Banned = "check";
return (lookup);
}
}

sub vcl_hash {
## Check if they have a ban in the cache, or if they are going to be
banned in cache.
if (req.http.X-Banned) {
hash_data(req.http.X-Forwarded-For);
return (hash);
}
}

sub vcl_error {
if (obj.status == 988) { return (restart); }
}

sub vcl_miss {
if (req.http.X-Banned == "check") { error 988 "restarting"; }
}

This is a successful request. After this request, the second request will
not work (Varnish restarts):
0 Debug - "VCL_error(988, restarting)"
9 BackendOpen b production[47] 172.21.4.182 41813 172.21.4.111 80
9 TxRequest b GET
9 TxURL b http://www.site.com/
9 TxProtocol b HTTP/1.1
9 TxHeader b User-Agent: curl/7.19.7 (universal-apple-darwin10.0)
libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3
9 TxHeader b Host: www.site.com
9 TxHeader b Accept: */*
9 TxHeader b Proxy-Connection: Keep-Alive
9 TxHeader b X-Forwarded-For: 127.0.0.1
9 TxHeader b X-Varnish: 746583022
9 TxHeader b Accept-Encoding: gzip
9 RxProtocol b HTTP/1.1
9 RxStatus b 200
9 RxResponse b OK
9 RxHeader b Date: Thu, 16 Jun 2011 23:45:54 GMT
9 RxHeader b Server: Apache/2.2.3 (CentOS)
9 RxHeader b Cache-Control: private, proxy-revalidate
9 RxHeader b ETag: "9658bc1e80033b21277323e725948c91"
9 RxHeader b Content-Encoding: gzip
9 RxHeader b Vary: Accept-Encoding
9 RxHeader b Content-length: 11452
9 RxHeader b Content-Type: text/html; charset=utf-8
9 RxHeader b Content-Language: en
9 Fetch_Body b 4 0 1
9 Length b 11452
9 BackendReuse b production[47]
3 SessionOpen c 127.0.0.1 1204 :80
3 ReqStart c 127.0.0.1 1204 746583022
3 RxRequest c HEAD
3 RxURL c http://www.site.com/
3 RxProtocol c HTTP/1.1
3 RxHeader c User-Agent: curl/7.19.7 (universal-apple-darwin10.0)
libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3
3 RxHeader c Host: www.site.com
3 RxHeader c Accept: */*
3 RxHeader c Proxy-Connection: Keep-Alive
3 VCL_call c recv lookup
3 VCL_call c hash
3 Hash c 127.0.0.1
3 VCL_return c hash
3 VCL_call c miss error
3 VCL_call c error restart
3 VCL_call c recv lookup
3 VCL_call c hash
3 Hash c http://www.site.com/
3 Hash c www.site.com
3 VCL_return c hash
3 VCL_call c miss fetch
3 Backend c 9 production production[47]
3 TTL c 746583022 RFC 300 1308267955 0 0 0 0
3 VCL_call c fetch deliver
3 ObjProtocol c HTTP/1.1
3 ObjResponse c OK
3 ObjHeader c Date: Thu, 16 Jun 2011 23:45:54 GMT
3 ObjHeader c Server: Apache/2.2.3 (CentOS)
3 ObjHeader c Cache-Control: private, proxy-revalidate
3 ObjHeader c ETag: "9658bc1e80033b21277323e725948c91"
3 ObjHeader c Content-Encoding: gzip
3 ObjHeader c Vary: Accept-Encoding
3 ObjHeader c Content-Type: text/html; charset=utf-8
3 ObjHeader c Content-Language: en
3 Gzip c u F - 11452 46817 80 80 91551
3 VCL_call c deliver deliver
3 TxProtocol c HTTP/1.1
3 TxStatus c 200
3 TxResponse c OK
3 TxHeader c Server: Apache/2.2.3 (CentOS)
3 TxHeader c Cache-Control: private, proxy-revalidate
3 TxHeader c ETag: "9658bc1e80033b21277323e725948c91"
3 TxHeader c Vary: Accept-Encoding
3 TxHeader c Content-Type: text/html; charset=utf-8
3 TxHeader c Content-Language: en
3 TxHeader c Date: Thu, 16 Jun 2011 23:45:54 GMT
3 TxHeader c X-Varnish: 746583022
3 TxHeader c Age: 0
3 TxHeader c Via: 1.1 varnish
3 TxHeader c Connection: keep-alive
3 Length c 0
3 ReqEnd c 746583022 1308267954.333659887 1308267954.527986050
0.000048876 0.194267035 0.000059128
3 Debug c herding
3 SessionClose c no request
3 StatSess c 127.0.0.1 1204 0 1 1 0 0 1 344 0
0 Backend_health - production[33] Still healthy ------- 4 3 8 0.000000
0.000272
3 SessionOpen c 172.21.4.16 57711 :80
3 SessionClose c EOF

Regards,
-david

--
Ticket URL: <http://www.varnish-cache.org/trac/ticket/965>
Varnish <http://varnish-cache.org/>
The Varnish HTTP Accelerator

_______________________________________________
varnish-bugs mailing list
varnish-bugs [at] varnish-cache
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-bugs

Subject User Time
#965: Restarting a request in vcl_miss causes Varnish client crash. varnish-bugs at varnish-cache Jul 20, 2011, 3:49 PM
    Re: #965: Restarting a request in vcl_miss causes Varnish client crash. varnish-bugs at varnish-cache Aug 1, 2011, 3:33 AM
    Re: #965: Restarting a request in vcl_miss causes Varnish client crash. varnish-bugs at varnish-cache Aug 1, 2011, 3:35 AM
    Re: #965: Restarting a request in vcl_miss causes Varnish client crash. varnish-bugs at varnish-cache Aug 2, 2011, 5:08 AM
    Re: #965: Restarting a request in vcl_miss causes Varnish client crash. varnish-bugs at varnish-cache Aug 2, 2011, 5:57 AM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.