]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Relax synchronization mode in sqlite3.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 10 Sep 2015 10:15:05 +0000 (11:15 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 10 Sep 2015 10:15:05 +0000 (11:15 +0100)
src/libutil/sqlite_utils.c

index 18e3710ba564a62fa0cbd4ec99cb458871ec32ce..7e12a278203076354d752387b300e477ed10088f 100644 (file)
@@ -248,7 +248,8 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
        gint rc, flags, lock_fd;
        gchar lock_path[PATH_MAX], dbdir[PATH_MAX], *pdir;
        static const char sqlite_wal[] = "PRAGMA journal_mode=\"wal\";",
-                       exclusive_lock_sql[] = "PRAGMA locking_mode=\"exclusive\";";
+                       exclusive_lock_sql[] = "PRAGMA locking_mode=\"exclusive\";",
+                       fsync_sql[] = "PRAGMA database.synchronous=1;";
        gboolean create = FALSE, has_lock = FALSE;
 
        flags = SQLITE_OPEN_READWRITE;
@@ -371,6 +372,11 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
                                sqlite3_errmsg (sqlite));
        }
 
+       if (sqlite3_exec (sqlite, fsync_sql, NULL, NULL, NULL) != SQLITE_OK) {
+               msg_warn_pool ("cannot set database.synchronous: %s",
+                               sqlite3_errmsg (sqlite));
+       }
+
        if (has_lock) {
                msg_debug_pool ("removing lock from %s", lock_path);
                rspamd_file_unlock (lock_fd, FALSE);