Mercurial > hg > nginx
changeset 5633:b74f1106f920
Win32: fixed cpu hog by cache manager on exit (ticket #514).
The "ngx_quit" may be reset by the worker thread before it's seen
by a ngx_cache_manager_thread(), resulting in an infinite loop. Make
sure to test ngx_exiting as well.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 31 Mar 2014 21:38:28 +0400 |
parents | b42e7c790b81 |
children | 5024d29354f1 |
files | src/os/win32/ngx_process_cycle.c |
diffstat | 1 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/os/win32/ngx_process_cycle.c Mon Mar 31 21:38:27 2014 +0400 +++ b/src/os/win32/ngx_process_cycle.c Mon Mar 31 21:38:28 2014 +0400 @@ -926,7 +926,7 @@ * ev == WAIT_ABANDONED_0 + 1 */ - if (ngx_terminate || ngx_quit) { + if (ngx_terminate || ngx_quit || ngx_exiting) { ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting"); return 0; } @@ -936,7 +936,7 @@ for ( ;; ) { - if (ngx_terminate || ngx_quit) { + if (ngx_terminate || ngx_quit || ngx_exiting) { ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting"); break; } @@ -1005,7 +1005,7 @@ path = cycle->paths.elts; for (i = 0; i < cycle->paths.nelts; i++) { - if (ngx_terminate || ngx_quit) { + if (ngx_terminate || ngx_quit || ngx_exiting) { break; }