From: Vsevolod Stakhov Date: Sat, 7 Nov 2015 00:21:16 +0000 (+0000) Subject: Add retries for simple sql commands in fuzzy backend X-Git-Tag: 1.1.0~613 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a496040058553462cfe9e7edda664ea2f091ddee;p=thirdparty%2Frspamd.git Add retries for simple sql commands in fuzzy backend --- diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index d346175214..1d9cc754c2 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -348,7 +348,17 @@ static gboolean rspamd_fuzzy_backend_run_sql (const gchar *sql, struct rspamd_fuzzy_backend *bk, GError **err) { - if (sqlite3_exec (bk->db, sql, NULL, NULL, NULL) != SQLITE_OK) { + guint retries = 0; + struct timespec ts; + gint ret; + + do { + ret = sqlite3_exec (bk->db, sql, NULL, NULL, NULL); + double_to_ts (sql_sleep_time, &ts); + } while (ret == SQLITE_BUSY && retries++ < max_retries && + nanosleep (&ts, NULL) == 0); + + if (ret != SQLITE_OK) { g_set_error (err, rspamd_fuzzy_backend_quark (), -1, "Cannot execute raw sql `%s`: %s", sql, sqlite3_errmsg (bk->db));