[master] 91c675e Clear the objcore attributes flags when (re)initializing an stv object
Nils Goroll
nils.goroll at uplex.de
Wed Nov 15 13:16:05 UTC 2017
commit 91c675e74336dd768c5315806811c97b4469ee31
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Wed Nov 15 14:08:36 2017 +0100
Clear the objcore attributes flags when (re)initializing an stv object
The oa_present member acts as a filter at the level above the stevedore
to check set attributes efficiently.
We missed to clear it when recreating freeing an abandoned backend
fetch object in vcl_backend_error.
Fixes #2319
diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c
index 393486d..7790351 100644
--- a/bin/varnishd/storage/stevedore.c
+++ b/bin/varnishd/storage/stevedore.c
@@ -86,7 +86,7 @@ STV_NewObject(struct worker *wrk, struct objcore *oc,
AN(stv->allocobj);
if (stv->allocobj(wrk, stv, oc, wsl) == 0)
return (0);
-
+ oc->oa_present = 0;
wrk->stats->n_object++;
VSLb(wrk->vsl, SLT_Storage, "%s %s",
oc->stobj->stevedore->name, oc->stobj->stevedore->ident);
diff --git a/bin/varnishtest/tests/r02319.vtc b/bin/varnishtest/tests/r02319.vtc
new file mode 100644
index 0000000..d49e176
--- /dev/null
+++ b/bin/varnishtest/tests/r02319.vtc
@@ -0,0 +1,37 @@
+varnishtest "Test that oc->oa_present is cleared when we create a new object"
+
+server s1 {
+ rxreq
+ txresp -hdr "Vary: buzz" -nolen -hdr "Content-Length: 10240" \
+ -body 1024
+} -start
+
+varnish v1 -arg "-p max_retries=1" -vcl+backend {
+ import vtc;
+
+ sub vcl_backend_fetch {
+ set bereq.between_bytes_timeout = 0.0001s;
+ }
+ sub vcl_backend_response {
+ set beresp.do_stream = false;
+ }
+ sub vcl_backend_error {
+ set beresp.storage = storage.Transient;
+ set beresp.status = 200;
+ set beresp.http.source = "vbe";
+ synthetic("synth");
+ set beresp.ttl = 1h;
+ return (deliver);
+ }
+} -start
+
+client c1 {
+ txreq -url "/"
+ rxresp
+ expect resp.status == 200
+} -run
+client c2 {
+ txreq -url "/"
+ rxresp
+ expect resp.status == 200
+} -run
More information about the varnish-commit
mailing list