summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2011-04-08 15:27:53 +0000
committerIgor Sysoev <igor@sysoev.ru>2011-04-08 15:27:53 +0000
commit711eeb851438331e87068ea3139df9b415f9ca6a (patch)
tree58e4c0a20e7c06ebe396290fec36db43a0a593b1
parentea38fe54bde053c4d60e9be7b1fcb08ea95e7e95 (diff)
downloadnginx-711eeb851438331e87068ea3139df9b415f9ca6a.tar.gz
nginx-711eeb851438331e87068ea3139df9b415f9ca6a.tar.bz2
fix CPU hog in cache manager
patch by Maxim Dounin
-rw-r--r--src/http/ngx_http_file_cache.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c
index 0d97e94ec..f26fcbc98 100644
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -1027,6 +1027,7 @@ ngx_http_file_cache_forced_expire(ngx_http_file_cache_t *cache)
if (fcn->count == 0) {
ngx_http_file_cache_delete(cache, q, name);
+ wait = 0;
} else {
if (--tries) {
@@ -1191,7 +1192,7 @@ ngx_http_file_cache_manager(void *data)
ngx_http_file_cache_t *cache = data;
off_t size;
- time_t next;
+ time_t next, wait;
next = ngx_http_file_cache_expire(cache);
@@ -1212,7 +1213,11 @@ ngx_http_file_cache_manager(void *data)
return next;
}
- next = ngx_http_file_cache_forced_expire(cache);
+ wait = ngx_http_file_cache_forced_expire(cache);
+
+ if (wait > 0) {
+ return wait;
+ }
if (ngx_http_file_cache_manager_sleep(cache) != NGX_OK) {
return next;