mirror of
https://github.com/nginx/nginx.git
synced 2025-06-20 03:51:09 +08:00
Cache: fixed race in ngx_http_file_cache_forced_expire().
During configuration reload two cache managers might exist for a short time. If both tried to delete the same cache node, the "ignore long locked inactive cache entry" alert appeared in logs. Additionally, ngx_http_file_cache_forced_expire() might be also called by worker processes, with similar results. Fix is to ignore cache nodes being deleted, similarly to how it is done in ngx_http_file_cache_expire() since 3755:76e3a93821b1. This was somehow missed in 7002:ab199f0eb8e8, when ignoring long locked cache entries was introduced in ngx_http_file_cache_forced_expire().
This commit is contained in:
parent
05577c18a8
commit
17c24244b4
@ -1756,6 +1756,11 @@ ngx_http_file_cache_forced_expire(ngx_http_file_cache_t *cache)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fcn->deleting) {
|
||||||
|
wait = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
p = ngx_hex_dump(key, (u_char *) &fcn->node.key,
|
p = ngx_hex_dump(key, (u_char *) &fcn->node.key,
|
||||||
sizeof(ngx_rbtree_key_t));
|
sizeof(ngx_rbtree_key_t));
|
||||||
len = NGX_HTTP_CACHE_KEY_LEN - sizeof(ngx_rbtree_key_t);
|
len = NGX_HTTP_CACHE_KEY_LEN - sizeof(ngx_rbtree_key_t);
|
||||||
|
Loading…
Reference in New Issue
Block a user