[PATCH][varnish3.0.2-streaming] Release the stream_busyobj if we go to error while another thread is streaming
Jocelyn De La Rosa
jocelyn.delarosa at smartjog.com
Thu May 3 14:15:09 CEST 2012
Hi,
Here's a patch that release the stream_busyobj from the sess in cnt_error.
So if the object is currently fetched (and streamed) for another client,
varnish will properly deliver the error and varnish wont die.
It happened to me when we did a PURGE request on a object that was
fetched at the same time.
Using the following vcl:
sub vcl_fetch {
set beresp.do_stream = true;
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
}
-----
Varnish died:
Child (1290) died signal=6
Child (1290) Panic message: Assert error in RES_StreamWrite(),
cache_response.c line 444:
Condition(stlen <= st->len) not true.
...
Full trace here: http://pastebin.com/DaqDZ9U6
I hope it's the right way to fix it,
Cheers,
--
Jocelyn De La Rosa - Developer, Research& Engineering
SmartJog | www.smartjog.com
27 Blvd Hippolyte Marquès, 94200 Ivry-sur-Seine, France
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Release-the-stream_busyobj-if-we-go-to-error-while-a.patch
Type: text/x-patch
Size: 1021 bytes
Desc: not available
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-dev/attachments/20120503/accb1b36/attachment.bin>
More information about the varnish-dev
mailing list