-
Notifications
You must be signed in to change notification settings - Fork 378
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix potential case when varnish stops responding with a large number of bans and variations
- Loading branch information
Showing
3 changed files
with
93 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,6 +6,7 @@ Makefile.in | |
_* | ||
.deps/ | ||
.libs/ | ||
.vscode/ | ||
*.o | ||
*.a | ||
*.lo | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
varnishtest "Optimized HSH_Lookup - ban is checked after Vary is matched" | ||
|
||
server s1 { | ||
rxreq | ||
expect req.url == /foo | ||
expect req.http.foobar == "1" | ||
txresp -hdr "Vary: Foobar" -body "1111" | ||
|
||
rxreq | ||
expect req.url == /foo | ||
expect req.http.foobar == "2" | ||
txresp -hdr "Vary: Foobar" -body "2222" | ||
|
||
rxreq | ||
expect req.url == /foo | ||
expect req.http.foobar == "3" | ||
txresp -hdr "Vary: Foobar" -body "3333" | ||
|
||
rxreq | ||
expect req.url == /foo | ||
expect req.http.foobar == "1" | ||
txresp -hdr "Vary: Foobar" -body "1111" | ||
|
||
rxreq | ||
expect req.url == /foo | ||
expect req.http.foobar == "1" | ||
txresp -hdr "Vary: Foobar" -body "1111" | ||
|
||
} -start | ||
|
||
varnish v1 -vcl+backend { | ||
sub vcl_backend_response { | ||
set beresp.http.url = bereq.url; | ||
} | ||
} -start | ||
|
||
|
||
client c1 { | ||
txreq -url /foo -hdr "Foobar: 1" | ||
rxresp | ||
expect resp.body == "1111" | ||
} -run | ||
|
||
client c1 { | ||
txreq -url /foo -hdr "Foobar: 2" | ||
rxresp | ||
expect resp.body == "2222" | ||
} -run | ||
|
||
client c1 { | ||
txreq -url /foo -hdr "Foobar: 3" | ||
rxresp | ||
expect resp.body == "3333" | ||
|
||
} -run | ||
|
||
varnish v1 -expect n_object == 3 | ||
varnish v1 -expect cache_hit == 0 | ||
varnish v1 -expect cache_miss == 3 | ||
|
||
client c1 { | ||
txreq -url /foo -hdr "Foobar: 1" | ||
rxresp | ||
} -run | ||
|
||
varnish v1 -expect cache_hit == 1 | ||
varnish v1 -expect cache_miss == 3 | ||
|
||
varnish v1 -cliok "ban obj.http.url == /foo" | ||
varnish v1 -cliok "ban obj.http.url == /bar" | ||
varnish v1 -cliok "ban obj.http.url == /baz" | ||
|
||
client c1 { | ||
txreq -url /foo -hdr "Foobar: 1" | ||
rxresp | ||
} -run | ||
|
||
varnish v1 -expect bans_tested == 1 | ||
varnish v1 -expect bans_tests_tested == 3 | ||
varnish v1 -expect bans_obj_killed == 1 | ||
varnish v1 -expect n_object == 3 | ||
|
||
|
||
varnish v1 -expect cache_hit == 1 | ||
varnish v1 -expect cache_miss == 4 | ||
varnish v1 -expect client_req == 5 |