Mercurial > hg > nginx-quic
diff src/http/ngx_http_file_cache.c @ 2927:55ceaef03d34
proxy_cache_use_stale/fastcgi_cache_use_stale updating
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 06 Jun 2009 18:49:47 +0000 |
parents | 80a314b63c56 |
children | 92cc13f7487d |
line wrap: on
line diff
--- a/src/http/ngx_http_file_cache.c +++ b/src/http/ngx_http_file_cache.c @@ -331,10 +331,23 @@ ngx_http_file_cache_open(ngx_http_reques if (c->valid_sec < now) { - ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, - "http file cache expired: %T %T", c->valid_sec, now); + ngx_shmtx_lock(&cache->shpool->mutex); + + if (c->node->updating) { + rc = NGX_HTTP_CACHE_UPDATING; - return NGX_HTTP_CACHE_STALE; + } else { + c->node->updating = 1; + rc = NGX_HTTP_CACHE_STALE; + } + + ngx_shmtx_unlock(&cache->shpool->mutex); + + ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + "http file cache expired: %i %T %T", + rc, c->valid_sec, now); + + return rc; } return NGX_OK; @@ -648,6 +661,8 @@ ngx_http_file_cache_update(ngx_http_requ c->node->exists = 1; } + c->node->updating = 0; + ngx_shmtx_unlock(&cache->shpool->mutex); } @@ -730,6 +745,8 @@ ngx_http_file_cache_free(ngx_http_reques c->node->error = c->error; } + c->node->updating = 0; + ngx_shmtx_unlock(&cache->shpool->mutex); if (c->temp_file) {