Commit 5014b338 authored by Nils Goroll's avatar Nils Goroll

Revert "kill stale oc for backend synth"

This reverts commit de3e581e.

tests/saintmode/test04.vtc from varnish-modules revealed that there may
be use cases where it is implied that vcl_backend_error will leave a
ttl=0 object and the sale object will remain in place.

This can be resolved by:

	- return(abandon) for these cases or
	- making the HSH_Kill conditional on bo->fetch_objcore->ttl > 0

but I already has concerns regarding the impact of this change and have
them even more now.

We need time to ponder about the consequences and a documented
inefficiency is better than unexpected behaviour in a release.
parent 38e70fad
......@@ -776,8 +776,6 @@ vbf_stp_error(struct worker *wrk, struct busyobj *bo)
VSB_destroy(&synth_body);
HSH_Unbusy(wrk, bo->fetch_objcore);
ObjSetState(wrk, bo->fetch_objcore, BOS_FINISHED);
if (bo->stale_oc != NULL)
HSH_Kill(bo->stale_oc);
return (F_STP_DONE);
}
......
varnishtest "#2946 - objcore leak for backend_synth"
varnish v1 -vcl {
backend bad { .host = "${bad_backend}"; }
sub vcl_backend_error {
if (bereq.http.abandon) {
return (abandon);
}
set beresp.status = 200;
set beresp.ttl = 0.0001s;
set beresp.grace = 1h;
}
} -start
client c1 -repeat 20 -keepalive {
txreq
rxresp
expect resp.status == 200
delay 0.001
} -run
delay 2
client c1 {
txreq -hdr "abandon: true"
rxresp
expect resp.status == 200
expect resp.http.age > 1
} -run
varnish v1 -expect n_objectcore == 1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment