twice termination delay only after SIGALRM, otherwise many separate SIGCHLD

and SIGIO signals quickly increase delay to the level when SIGKILL is sent
This commit is contained in:
Igor Sysoev 2009-08-26 15:12:28 +00:00
parent 31f6c5c55d
commit 450659e62a
3 changed files with 7 additions and 1 deletions

View File

@ -373,6 +373,7 @@ ngx_signal_handler(int signo)
break;
case SIGALRM:
ngx_sigalrm = 1;
break;
case SIGIO:

View File

@ -37,6 +37,7 @@ ngx_uint_t ngx_threaded;
sig_atomic_t ngx_reap;
sig_atomic_t ngx_sigio;
sig_atomic_t ngx_sigalrm;
sig_atomic_t ngx_terminate;
sig_atomic_t ngx_quit;
sig_atomic_t ngx_debug_quit;
@ -142,7 +143,10 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
for ( ;; ) {
if (delay) {
delay *= 2;
if (ngx_sigalrm) {
delay *= 2;
ngx_sigalrm = 0;
}
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"termination cycle: %d", delay);

View File

@ -46,6 +46,7 @@ extern ngx_uint_t ngx_exiting;
extern sig_atomic_t ngx_reap;
extern sig_atomic_t ngx_sigio;
extern sig_atomic_t ngx_sigalrm;
extern sig_atomic_t ngx_quit;
extern sig_atomic_t ngx_debug_quit;
extern sig_atomic_t ngx_terminate;