In memory subrequest hang if backend return 500
Maxim Dounin
mdounin at mdounin.ru
Wed Mar 21 08:53:56 UTC 2012
Hello!
On Wed, Mar 21, 2012 at 10:53:45AM +0800, Abioy Sun wrote:
> Hi All,
>
> In the file ngx_http_upstream.c I found some code like this:
>
> 1618 if (u->headers_in.status_n > NGX_HTTP_SPECIAL_RESPONSE) {
> 1619
> 1620 if (r->subrequest_in_memory) {
> 1621 u->buffer.last = u->buffer.pos;
> 1622 }
>
> that means, if the status backend return if greater than 300, the first
> part of the body would be abandoned. Will this cause the issue that the
> main request won't be woken again and keep sleeping until timeout? Or did I
> misunderstand anything?
Do you use keepalive connections to backends?
As far as I see, this may indeed cause problems with keepalive
connections, though should be ok in non-keepalive case.
Maxim Dounin
More information about the nginx-devel
mailing list