[PATCH] Upstream: avoid closing connection when no client body needed

Justin Li jli.justinli at gmail.com
Wed Mar 9 01:56:11 UTC 2016


Thanks for your feedback Maxim!

On Wed, Mar 09, 2016 at 01:13:46, Maxim Dounin wrote:

> So you are trying to optimize a specific case with proxy_no_cache
> in addition to what 35990c69b3ac fixed, right?

Yes, as you figured, this is about preventing the client connection from
being
closed when the client response is header_only and the upstream response
switches from cacheable to not cacheable between the header_only check
and downstream_error check. Sorry for the vagueness.

> What about explicitly handling the proxy_no_cache case right
> after the proxy_no_cache cache check, much like it is already done
> with cache object (see ngx_http_file_cache_free() call)?
>
> (Additionally, the code between the no_cache test and the
> ngx_http_file_cache_free() call also shows that lack of
> proxy_cache_valid and/or explicit cache validity headers can lead
> to the same behaviour.)

I assume you mean something like calling
ngx_http_upstream_finalize_request()
if (r->header_only && !u->cacheable && !u->store) after the referenced call
to
ngx_http_file_cache_free(). I'll submit another patch after testing to
confirm it
fully fixes our issue unless you object to that interpretation.

--
Justin Li
Developer @ Shopify
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20160308/69d098cd/attachment.html>


More information about the nginx-devel mailing list