revert r3935 and fix "stalled cache updating" alert

by freeing cache at upstream finalize phase
patch by Maxim Dounin
This commit is contained in:
Igor Sysoev 2011-06-28 13:26:08 +00:00
parent f58154db2f
commit 87ee007022

View File

@ -2031,15 +2031,6 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
c->error = 1;
} else {
#if (NGX_HTTP_CACHE)
if (r->cache) {
ngx_http_file_cache_free(r->cache, u->pipe->temp_file);
}
#endif
ngx_http_upstream_finalize_request(r, u, rc);
return;
}
@ -2991,16 +2982,19 @@ ngx_http_upstream_finalize_request(ngx_http_request_t *r,
#if (NGX_HTTP_CACHE)
if (u->cacheable && r->cache) {
time_t valid;
if (r->cache) {
if (rc == NGX_HTTP_BAD_GATEWAY || rc == NGX_HTTP_GATEWAY_TIME_OUT) {
if (u->cacheable) {
valid = ngx_http_file_cache_valid(u->conf->cache_valid, rc);
if (rc == NGX_HTTP_BAD_GATEWAY || rc == NGX_HTTP_GATEWAY_TIME_OUT) {
time_t valid;
if (valid) {
r->cache->valid_sec = ngx_time() + valid;
r->cache->error = rc;
valid = ngx_http_file_cache_valid(u->conf->cache_valid, rc);
if (valid) {
r->cache->valid_sec = ngx_time() + valid;
r->cache->error = rc;
}
}
}