[Varnish] #1112: Varnish delivers truncated files when serving from Tomcat7 Backend and ESI enabled

Varnish varnish-bugs at varnish-cache.org
Mon Apr 16 14:28:54 CEST 2012


#1112: Varnish delivers truncated files when serving from Tomcat7 Backend and ESI
enabled
---------------------+------------------------------------------------------
 Reporter:  derjohn  |       Owner:  scoof
     Type:  defect   |      Status:  new  
 Priority:  normal   |   Milestone:       
Component:  build    |     Version:  3.0.2
 Severity:  normal   |    Keywords:       
---------------------+------------------------------------------------------
Description changed by phk:

Old description:

> Hello,
> in our setup we have a varnish in front of several Tomcat7. When Tomcat7
> delivers static content, it uses chunked tranfers.
>
> We'hit by a bug in that combination. The user gets the static content
> (e.g. jquery.js) and receives a 200 status, but the content sometimes (!)
> is not transferred completely. E.G. there jquery.js get truncated after
> some kilobytes. My observation was, that this happens mostly (only?) if
> the backend is reused.
>
> In the logs I see such error msgs, which correlate to the error:
>
>   19 Debug        c Hit send timeout, wrote = 11680/21115; retrying
>   19 Debug        c Write error, retval = -1, len = 9435, errno =
> Resource temporarily unavailable
>
> To test I use a simple script like that and look if the outputs is always
> the same or not:
>
>  for i in $(seq 1 1000); do curl -s -x "" -k
> 'http://$HOST/...011_jquery-1.7.1.js' | md5sum ; done
>
> I tried varnish 3.0.2 and some newer trunks, the effect is still the
> same.
>
> The same setup runs with the same config with varnish2.1.5 fine. (I had
> to adapt the config parts of ESI enabling, as the syntax changed from 2.x
> to 3.x).
>
> rgds,
> derjohn

New description:

 Hello,
 in our setup we have a varnish in front of several Tomcat7. When Tomcat7
 delivers static content, it uses chunked tranfers.

 We'hit by a bug in that combination. The user gets the static content
 (e.g. jquery.js) and receives a 200 status, but the content sometimes (!)
 is not transferred completely. E.G. there jquery.js get truncated after
 some kilobytes. My observation was, that this happens mostly (only?) if
 the backend is reused.

 In the logs I see such error msgs, which correlate to the error:
 {{{
   19 Debug        c Hit send timeout, wrote = 11680/21115; retrying
   19 Debug        c Write error, retval = -1, len = 9435, errno = Resource
 temporarily unavailable
 }}}
 To test I use a simple script like that and look if the outputs is always
 the same or not:
 {{{
  for i in $(seq 1 1000); do curl -s -x "" -k
 'http://$HOST/...011_jquery-1.7.1.js' | md5sum ; done
 }}}
 I tried varnish 3.0.2 and some newer trunks, the effect is still the same.

 The same setup runs with the same config with varnish2.1.5 fine. (I had to
 adapt the config parts of ESI enabling, as the syntax changed from 2.x to
 3.x).

 rgds,
 derjohn

--

-- 
Ticket URL: <https://www.varnish-cache.org/trac/ticket/1112#comment:5>
Varnish <https://varnish-cache.org/>
The Varnish HTTP Accelerator




More information about the varnish-bugs mailing list