From: Vsevolod Stakhov Date: Tue, 22 Dec 2015 16:38:16 +0000 (+0000) Subject: Add wal checkpoints to bayes backend X-Git-Tag: 1.1.0~222 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c634505b897822e110c32afe33d3ef2f55444cb;p=thirdparty%2Frspamd.git Add wal checkpoints to bayes backend --- diff --git a/src/libstat/backends/sqlite3_backend.c b/src/libstat/backends/sqlite3_backend.c index c980ddf543..e6ef68a23d 100644 --- a/src/libstat/backends/sqlite3_backend.c +++ b/src/libstat/backends/sqlite3_backend.c @@ -896,6 +896,7 @@ rspamd_sqlite3_finalize_learn (struct rspamd_task *task, gpointer runtime, { struct rspamd_stat_sqlite3_rt *rt = runtime; struct rspamd_stat_sqlite3_db *bk; + gint rc, wal_frames, wal_checkpointed, mode; g_assert (rt != NULL); bk = rt->db; @@ -906,7 +907,24 @@ rspamd_sqlite3_finalize_learn (struct rspamd_task *task, gpointer runtime, bk->in_transaction = FALSE; } - return; +#ifdef SQLITE_OPEN_WAL +#ifdef SQLITE_CHECKPOINT_TRUNCATE + mode = SQLITE_CHECKPOINT_TRUNCATE; +#elif defined(SQLITE_CHECKPOINT_RESTART) + mode = SQLITE_CHECKPOINT_RESTART; +#elif defined(SQLITE_CHECKPOINT_FULL) + mode = SQLITE_CHECKPOINT_FULL; +#endif + /* Perform wal checkpoint (might be long) */ + if (sqlite3_wal_checkpoint_v2 (bk->sqlite, + NULL, + mode, + &wal_frames, + &wal_checkpointed) != SQLITE_OK) { + msg_warn_task ("cannot commit checkpoint: %s", + sqlite3_errmsg (bk->sqlite)); + } +#endif } gulong