Fixed exit status on start failure.
This and previous commit close #131 issue on GitHub.
This commit is contained in:
@@ -694,7 +694,7 @@ nxt_main_process_sigterm_handler(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
nxt_exiting = 1;
|
nxt_exiting = 1;
|
||||||
|
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -708,7 +708,7 @@ nxt_main_process_sigquit_handler(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
nxt_exiting = 1;
|
nxt_exiting = 1;
|
||||||
|
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -918,7 +918,7 @@ nxt_main_cleanup_worker_process(nxt_task_t *task, nxt_pid_t pid)
|
|||||||
if (nxt_exiting) {
|
if (nxt_exiting) {
|
||||||
|
|
||||||
if (rt->nprocesses == 2) {
|
if (rt->nprocesses == 2) {
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (init != NULL) {
|
} else if (init != NULL) {
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ nxt_port_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
|||||||
void
|
void
|
||||||
nxt_port_quit_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
nxt_port_quit_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
|
||||||
{
|
{
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ static nxt_int_t nxt_runtime_systemd_listen_sockets(nxt_task_t *task,
|
|||||||
static nxt_int_t nxt_runtime_event_engines(nxt_task_t *task, nxt_runtime_t *rt);
|
static nxt_int_t nxt_runtime_event_engines(nxt_task_t *task, nxt_runtime_t *rt);
|
||||||
static nxt_int_t nxt_runtime_thread_pools(nxt_thread_t *thr, nxt_runtime_t *rt);
|
static nxt_int_t nxt_runtime_thread_pools(nxt_thread_t *thr, nxt_runtime_t *rt);
|
||||||
static void nxt_runtime_start(nxt_task_t *task, void *obj, void *data);
|
static void nxt_runtime_start(nxt_task_t *task, void *obj, void *data);
|
||||||
static void nxt_runtime_initial_start(nxt_task_t *task);
|
static void nxt_runtime_initial_start(nxt_task_t *task, nxt_uint_t status);
|
||||||
static void nxt_runtime_close_idle_connections(nxt_event_engine_t *engine);
|
static void nxt_runtime_close_idle_connections(nxt_event_engine_t *engine);
|
||||||
static void nxt_runtime_exit(nxt_task_t *task, void *obj, void *data);
|
static void nxt_runtime_exit(nxt_task_t *task, void *obj, void *data);
|
||||||
static nxt_int_t nxt_runtime_event_engine_change(nxt_task_t *task,
|
static nxt_int_t nxt_runtime_event_engine_change(nxt_task_t *task,
|
||||||
@@ -351,12 +351,12 @@ nxt_runtime_start(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nxt_runtime_initial_start(nxt_task_t *task)
|
nxt_runtime_initial_start(nxt_task_t *task, nxt_uint_t status)
|
||||||
{
|
{
|
||||||
nxt_int_t ret;
|
nxt_int_t ret;
|
||||||
nxt_thread_t *thr;
|
nxt_thread_t *thr;
|
||||||
@@ -407,18 +407,19 @@ nxt_runtime_initial_start(nxt_task_t *task)
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nxt_runtime_quit(nxt_task_t *task)
|
nxt_runtime_quit(nxt_task_t *task, nxt_uint_t status)
|
||||||
{
|
{
|
||||||
nxt_bool_t done;
|
nxt_bool_t done;
|
||||||
nxt_runtime_t *rt;
|
nxt_runtime_t *rt;
|
||||||
nxt_event_engine_t *engine;
|
nxt_event_engine_t *engine;
|
||||||
|
|
||||||
rt = task->thread->runtime;
|
rt = task->thread->runtime;
|
||||||
|
rt->status |= status;
|
||||||
engine = task->thread->engine;
|
engine = task->thread->engine;
|
||||||
|
|
||||||
nxt_debug(task, "exiting");
|
nxt_debug(task, "exiting");
|
||||||
@@ -477,6 +478,7 @@ nxt_runtime_close_idle_connections(nxt_event_engine_t *engine)
|
|||||||
static void
|
static void
|
||||||
nxt_runtime_exit(nxt_task_t *task, void *obj, void *data)
|
nxt_runtime_exit(nxt_task_t *task, void *obj, void *data)
|
||||||
{
|
{
|
||||||
|
int status;
|
||||||
nxt_runtime_t *rt;
|
nxt_runtime_t *rt;
|
||||||
nxt_process_t *process;
|
nxt_process_t *process;
|
||||||
nxt_event_engine_t *engine;
|
nxt_event_engine_t *engine;
|
||||||
@@ -522,11 +524,12 @@ nxt_runtime_exit(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
nxt_thread_mutex_destroy(&rt->processes_mutex);
|
nxt_thread_mutex_destroy(&rt->processes_mutex);
|
||||||
|
|
||||||
|
status = rt->status;
|
||||||
nxt_mp_destroy(rt->mem_pool);
|
nxt_mp_destroy(rt->mem_pool);
|
||||||
|
|
||||||
nxt_debug(task, "exit");
|
nxt_debug(task, "exit: %d", status);
|
||||||
|
|
||||||
exit(0);
|
exit(status);
|
||||||
nxt_unreachable();
|
nxt_unreachable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -605,7 +608,7 @@ nxt_runtime_thread_pool_destroy(nxt_task_t *task, nxt_runtime_t *rt,
|
|||||||
n = rt->thread_pools->nelts;
|
n = rt->thread_pools->nelts;
|
||||||
|
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
cont(task);
|
cont(task, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,7 +661,7 @@ nxt_runtime_thread_pool_exit(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
/* The last thread pool. */
|
/* The last thread pool. */
|
||||||
rt->continuation(task);
|
rt->continuation(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#define _NXT_RUNTIME_H_INCLUDED_
|
#define _NXT_RUNTIME_H_INCLUDED_
|
||||||
|
|
||||||
|
|
||||||
typedef void (*nxt_runtime_cont_t)(nxt_task_t *task);
|
typedef void (*nxt_runtime_cont_t)(nxt_task_t *task, nxt_uint_t status);
|
||||||
|
|
||||||
|
|
||||||
struct nxt_runtime_s {
|
struct nxt_runtime_s {
|
||||||
@@ -49,6 +49,8 @@ struct nxt_runtime_s {
|
|||||||
|
|
||||||
uint8_t daemon;
|
uint8_t daemon;
|
||||||
uint8_t batch;
|
uint8_t batch;
|
||||||
|
uint8_t status;
|
||||||
|
|
||||||
const char *engine;
|
const char *engine;
|
||||||
uint32_t engine_connections;
|
uint32_t engine_connections;
|
||||||
uint32_t auxiliary_threads;
|
uint32_t auxiliary_threads;
|
||||||
@@ -75,7 +77,7 @@ typedef nxt_int_t (*nxt_module_init_t)(nxt_thread_t *thr, nxt_runtime_t *rt);
|
|||||||
|
|
||||||
|
|
||||||
nxt_int_t nxt_runtime_create(nxt_task_t *task);
|
nxt_int_t nxt_runtime_create(nxt_task_t *task);
|
||||||
void nxt_runtime_quit(nxt_task_t *task);
|
void nxt_runtime_quit(nxt_task_t *task, nxt_uint_t status);
|
||||||
|
|
||||||
void nxt_runtime_event_engine_free(nxt_runtime_t *rt);
|
void nxt_runtime_event_engine_free(nxt_runtime_t *rt);
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ nxt_worker_process_quit(nxt_task_t *task)
|
|||||||
rt->listen_sockets->nelts = 0;
|
rt->listen_sockets->nelts = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ nxt_worker_process_sigterm_handler(nxt_task_t *task, void *obj, void *data)
|
|||||||
|
|
||||||
/* A fast exit. */
|
/* A fast exit. */
|
||||||
|
|
||||||
nxt_runtime_quit(task);
|
nxt_runtime_quit(task, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user