]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Another try to fight with WAL growth
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 1 Dec 2015 18:18:12 +0000 (18:18 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 1 Dec 2015 18:18:12 +0000 (18:18 +0000)
src/libserver/fuzzy_backend.c

index b22b8d010a02aad684a9ba5c47b8d7fec42414de..718274ca5d492247eebdb0a0eaa65843f9d46c24 100644 (file)
@@ -674,7 +674,7 @@ rspamd_fuzzy_backend_add (struct rspamd_fuzzy_backend *backend,
 gboolean
 rspamd_fuzzy_backend_finish_update (struct rspamd_fuzzy_backend *backend)
 {
-       gint rc;
+       gint rc, wal_frames, wal_checkpointed;
 
        rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
                        RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT);
@@ -686,6 +686,21 @@ rspamd_fuzzy_backend_finish_update (struct rspamd_fuzzy_backend *backend)
                                RSPAMD_FUZZY_BACKEND_TRANSACTION_ROLLBACK);
                return FALSE;
        }
+       else {
+               /* Perform wal checkpoint (might be long) */
+               if (sqlite3_wal_checkpoint_v2 (backend->db,
+                               NULL,
+                               SQLITE_CHECKPOINT_TRUNCATE,
+                               &wal_frames,
+                               &wal_checkpointed) != SQLITE_OK) {
+                       msg_warn_fuzzy_backend ("cannot commit checkpoint: %s",
+                                       sqlite3_errmsg (backend->db));
+               }
+               else {
+                       msg_info_fuzzy_backend ("total number of frames in the wal file: "
+                                       "%d, checkpointed: %d", wal_frames, wal_checkpointed);
+               }
+       }
 
        return TRUE;
 }