[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