From d17fe6bfce3ff90d38ae641715d07a68ab171be6 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 11 Mar 2019 12:40:03 +0000 Subject: [Minor] Print failed stage when showing stat error --- src/libserver/task.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++- src/libserver/task.h | 7 ++++++ 2 files changed, 77 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/libserver/task.c b/src/libserver/task.c index 972856f29..30bccb81b 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -819,7 +819,9 @@ rspamd_task_process (struct rspamd_task *task, guint stages) if (stat_error == NULL) { g_set_error (&stat_error, g_quark_from_static_string ("stat"), 500, - "Unknown statistics error"); + "Unknown statistics error, found on stage %s;" + " classifier: %s", + rspamd_task_stage_name (st), task->classifier); } if (stat_error->code >= 400) { @@ -1701,4 +1703,71 @@ rspamd_task_set_finish_time (struct rspamd_task *task) } return FALSE; +} + +const gchar * +rspamd_task_stage_name (enum rspamd_task_stage stg) +{ + const gchar *ret = "unknown stage"; + + switch (stg) { + case RSPAMD_TASK_STAGE_CONNECT: + ret = "connect"; + break; + case RSPAMD_TASK_STAGE_ENVELOPE: + ret = "envelope"; + break; + case RSPAMD_TASK_STAGE_READ_MESSAGE: + ret = "read_message"; + break; + case RSPAMD_TASK_STAGE_PRE_FILTERS: + ret = "prefilters"; + break; + case RSPAMD_TASK_STAGE_PROCESS_MESSAGE: + ret = "process_message"; + break; + case RSPAMD_TASK_STAGE_FILTERS: + ret = "filters"; + break; + case RSPAMD_TASK_STAGE_CLASSIFIERS_PRE: + ret = "classifiers_pre"; + break; + case RSPAMD_TASK_STAGE_CLASSIFIERS: + ret = "classifiers"; + break; + case RSPAMD_TASK_STAGE_CLASSIFIERS_POST: + ret = "classifiers_post"; + break; + case RSPAMD_TASK_STAGE_COMPOSITES: + ret = "composites"; + break; + case RSPAMD_TASK_STAGE_POST_FILTERS: + ret = "postfilters"; + break; + case RSPAMD_TASK_STAGE_LEARN_PRE: + ret = "learn_pre"; + break; + case RSPAMD_TASK_STAGE_LEARN: + ret = "learn"; + break; + case RSPAMD_TASK_STAGE_LEARN_POST: + ret = "learn_post"; + break; + case RSPAMD_TASK_STAGE_COMPOSITES_POST: + ret = "composites_post"; + break; + case RSPAMD_TASK_STAGE_IDEMPOTENT: + ret = "idempotent"; + break; + case RSPAMD_TASK_STAGE_DONE: + ret = "done"; + break; + case RSPAMD_TASK_STAGE_REPLIED: + ret = "replied"; + break; + default: + break; + } + + return ret; } \ No newline at end of file diff --git a/src/libserver/task.h b/src/libserver/task.h index 684f5c2c0..b97f91eb4 100644 --- a/src/libserver/task.h +++ b/src/libserver/task.h @@ -357,4 +357,11 @@ gdouble* rspamd_task_profile_get (struct rspamd_task *task, const gchar *key); */ gboolean rspamd_task_set_finish_time (struct rspamd_task *task); +/** + * Returns task processing stage name + * @param stg + * @return + */ +const gchar *rspamd_task_stage_name (enum rspamd_task_stage stg); + #endif /* TASK_H_ */ -- cgit v1.2.3