summaryrefslogtreecommitdiffstats
path: root/src/libserver/worker_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libserver/worker_util.c')
-rw-r--r--src/libserver/worker_util.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/libserver/worker_util.c b/src/libserver/worker_util.c
index 883e7e8a9..163b0a509 100644
--- a/src/libserver/worker_util.c
+++ b/src/libserver/worker_util.c
@@ -761,23 +761,23 @@ rspamd_main_heartbeat_cb (EV_P_ ev_timer *w, int revents)
-(wrk->hb.nbeats) >= rspamd_main->cfg->heartbeats_loss_max) {
- if (-(wrk->hb.nbeats) >= rspamd_main->cfg->heartbeats_loss_max + 1) {
- msg_err_main ("terminate worker type %s with pid %P, "
- "last beat on: %s; %L heartbeat loast",
+ if (-(wrk->hb.nbeats) > rspamd_main->cfg->heartbeats_loss_max + 1) {
+ msg_err_main ("force kill worker type %s with pid %P, "
+ "last beat on: %s; %L heartbeat lost",
g_quark_to_string (wrk->type),
wrk->pid,
timebuf,
-(wrk->hb.nbeats));
- kill (wrk->pid, SIGTERM);
+ kill (wrk->pid, SIGKILL);
}
else {
- msg_err_main ("force kill worker type %s with pid %P, "
- "last beat on: %s; %L heartbeat loast",
+ msg_err_main ("terminate worker type %s with pid %P, "
+ "last beat on: %s; %L heartbeat lost",
g_quark_to_string (wrk->type),
wrk->pid,
timebuf,
-(wrk->hb.nbeats));
- kill (wrk->pid, SIGKILL);
+ kill (wrk->pid, SIGTERM);
}
}
@@ -1363,10 +1363,21 @@ rspamd_check_termination_clause (struct rspamd_main *rspamd_main,
if (WIFEXITED (res) && WEXITSTATUS (res) == 0) {
/* Normal worker termination, do not fork one more */
- msg_info_main ("%s process %P terminated normally",
- g_quark_to_string (wrk->type),
- wrk->pid);
- need_refork = FALSE;
+
+ if (wrk->hb.nbeats < 0) {
+ msg_info_main ("%s process %P terminated normally, but lost %L "
+ "heartbeats, refork it",
+ g_quark_to_string (wrk->type),
+ wrk->pid,
+ -(wrk->hb.nbeats));
+ need_refork = TRUE;
+ }
+ else {
+ msg_info_main ("%s process %P terminated normally",
+ g_quark_to_string (wrk->type),
+ wrk->pid);
+ need_refork = FALSE;
+ }
}
else {
if (WIFSIGNALED (res)) {