
daghf at varnish-cache
May 10, 2012, 1:59 AM
Views: 61
Permalink
|
|
[master] 4020b13 Req.hash_always_miss now implies req.hash_ignore_busy.
|
|
commit 4020b13d0eab47df865d3b055404ed84b8ffd459 Author: Dag Haavi Finstad <daghf [at] varnish-software> Date: Tue May 8 17:10:58 2012 +0200 Req.hash_always_miss now implies req.hash_ignore_busy. Fixes a case where we might get a cache hit even though hash_always_miss is set. Fixes: #1073 diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c index 6facf0a..1228126 100644 --- a/bin/varnishd/cache/cache_hash.c +++ b/bin/varnishd/cache/cache_hash.c @@ -332,7 +332,7 @@ HSH_Lookup(struct sess *sp) if (oc->flags & OC_F_BUSY || oc->busyobj != NULL) { CHECK_OBJ_ORNULL(oc->busyobj, BUSYOBJ_MAGIC); - if (req->hash_ignore_busy) + if (req->hash_ignore_busy || req->hash_always_miss) continue; if (oc->busyobj != NULL && diff --git a/bin/varnishtest/tests/r01073.vtc b/bin/varnishtest/tests/r01073.vtc new file mode 100644 index 0000000..936f8ce --- /dev/null +++ b/bin/varnishtest/tests/r01073.vtc @@ -0,0 +1,55 @@ +varnishtest "Test that hash_always_miss also implies hash_ignore_busy. Ticket #1073." + +server s1 { + rxreq + sema r1 sync 2 + sema r2 sync 2 + delay 1 + txresp -hdr "Server: 1" +} -start + +server s2 { + rxreq + sema r2 sync 2 + txresp -hdr "Server: 2" +} -start + +varnish v1 -vcl+backend { + sub vcl_recv { + if (req.http.x-hash-always-miss == "1") { + set req.hash_always_miss = true; + } + if (req.http.x-client == "1") { + set req.backend = s1; + } + if (req.http.x-client == "2") { + set req.backend = s2; + } + } + sub vcl_deliver { + if(obj.hits > 0) { + set resp.http.X-Cache = "HIT"; + } else { + set resp.http.X-Cache = "MISS"; + } + } +} -start + +client c1 { + txreq -url "/" -hdr "x-client: 1" + rxresp + expect resp.status == 200 + expect resp.http.Server == "1" +} -start + +client c2 { + sema r1 sync 2 + txreq -url "/" -hdr "x-client: 2" -hdr "x-hash-always-miss: 1" + txreq -url "/" -hdr "x-client: 2" + rxresp + expect resp.status == 200 + expect resp.http.Server == "2" +} -start + +client c1 -wait +client c2 -wait _______________________________________________ varnish-commit mailing list varnish-commit [at] varnish-cache https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit
|