*) exit if no workers could not be started

*) do not quit old workers if no new workers could not be started
This commit is contained in:
Igor Sysoev 2009-06-06 12:36:44 +00:00
parent a864311b12
commit 7b6b09f105

View File

@ -14,7 +14,7 @@ static void ngx_process_init(ngx_cycle_t *cycle);
static void ngx_console_init(ngx_cycle_t *cycle);
static int __stdcall ngx_console_handler(u_long type);
static ngx_int_t ngx_create_events(ngx_cycle_t *cycle);
static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t type);
static ngx_int_t ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t type);
static void ngx_reopen_worker_processes(ngx_cycle_t *cycle);
static void ngx_quit_worker_processes(ngx_cycle_t *cycle, ngx_uint_t old);
static void ngx_terminate_worker_processes(ngx_cycle_t *cycle);
@ -116,7 +116,9 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
ngx_close_listening_sockets(cycle);
ngx_start_worker_processes(cycle, NGX_PROCESS_RESPAWN);
if (ngx_start_worker_processes(cycle, NGX_PROCESS_RESPAWN) == 0) {
exit(2);
}
timer = 0;
timeout = INFINITE;
@ -206,8 +208,9 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
ngx_cycle = cycle;
ngx_start_worker_processes(cycle, NGX_PROCESS_JUST_RESPAWN);
ngx_quit_worker_processes(cycle, 1);
if (ngx_start_worker_processes(cycle, NGX_PROCESS_JUST_RESPAWN)) {
ngx_quit_worker_processes(cycle, 1);
}
continue;
}
@ -382,7 +385,7 @@ ngx_create_events(ngx_cycle_t *cycle)
}
static void
static ngx_int_t
ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t type)
{
ngx_int_t n;
@ -394,9 +397,11 @@ ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t type)
for (n = 0; n < ccf->worker_processes; n++) {
if (ngx_spawn_process(cycle, "worker", type) == NGX_INVALID_PID) {
return;
break;
}
}
return n;
}