aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_upstream.c
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2016-11-03 17:09:32 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2016-11-03 17:09:32 +0300
commit5eac3bca41bcf4d75d0da2fe88e72516e889779d (patch)
treef7051966c29abd93faf23221bcb768de1ca098fd /src/http/ngx_http_upstream.c
parent6d9023f7b435e41a72b7729fc0a7afdd5fa59c5a (diff)
downloadnginx-5eac3bca41bcf4d75d0da2fe88e72516e889779d.tar.gz
nginx-5eac3bca41bcf4d75d0da2fe88e72516e889779d.zip
Upstream: avoid holding a cache node with upgraded connections.
Holding a cache node lock doesn't make sense as we can't use caching anyway, and results in "ignore long locked inactive cache entry" alerts if a node is locked for a long time. The same is done for unbuffered connections, as they can be alive for a long time as well.
Diffstat (limited to 'src/http/ngx_http_upstream.c')
-rw-r--r--src/http/ngx_http_upstream.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 1a657e6b3..fbd94d139 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -2760,6 +2760,15 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
u->header_sent = 1;
if (u->upgrade) {
+
+#if (NGX_HTTP_CACHE)
+
+ if (r->cache) {
+ ngx_http_file_cache_free(r->cache, u->pipe->temp_file);
+ }
+
+#endif
+
ngx_http_upstream_upgrade(r, u);
return;
}
@@ -2790,6 +2799,14 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
if (!u->buffering) {
+#if (NGX_HTTP_CACHE)
+
+ if (r->cache) {
+ ngx_http_file_cache_free(r->cache, u->pipe->temp_file);
+ }
+
+#endif
+
if (u->input_filter == NULL) {
u->input_filter_init = ngx_http_upstream_non_buffered_filter_init;
u->input_filter = ngx_http_upstream_non_buffered_filter;