commit cef345b: [Minor] Sqlite: Try to fix messy transaction

Vsevolod Stakhov vsevolod at highsecure.ru
Mon Jun 10 19:56:04 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-06-10 20:50:22 +0100
URL: https://github.com/rspamd/rspamd/commit/cef345bf0592c06e18154d9696f71324f11e9fd4 (HEAD -> master)

[Minor] Sqlite: Try to fix messy transaction

---
 src/libstat/backends/sqlite3_backend.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/libstat/backends/sqlite3_backend.c b/src/libstat/backends/sqlite3_backend.c
index 626bb0988..f4254c779 100644
--- a/src/libstat/backends/sqlite3_backend.c
+++ b/src/libstat/backends/sqlite3_backend.c
@@ -487,13 +487,13 @@ rspamd_sqlite3_opendb (rspamd_mempool_t *pool,
 	/* Check tokenizer configuration */
 
 	while ((ret = rspamd_sqlite3_run_prstmt (pool, bk->sqlite, bk->prstmt,
-			RSPAMD_STAT_BACKEND_TRANSACTION_START_EXCL)) == SQLITE_BUSY &&
+			RSPAMD_STAT_BACKEND_TRANSACTION_START_IM)) == SQLITE_BUSY &&
 			++ntries <= max_tries) {
 		nanosleep (&sleep_ts, NULL);
 	}
 
 	if (ret != SQLITE_OK) {
-		msg_err_pool ("failed to stard transaction: %d, %s", ret,
+		msg_err_pool ("failed to start transaction: %d, %s", ret,
 				sqlite3_errmsg (bk->sqlite));
 		sqlite3_close (bk->sqlite);
 		g_free (bk);
@@ -505,6 +505,15 @@ rspamd_sqlite3_opendb (rspamd_mempool_t *pool,
 			RSPAMD_STAT_BACKEND_LOAD_TOKENIZER, &sz64, &tk_conf) != SQLITE_OK ||
 			sz64 == 0) {
 
+		rspamd_sqlite3_run_prstmt (pool, bk->sqlite, bk->prstmt,
+				RSPAMD_STAT_BACKEND_TRANSACTION_COMMIT);
+
+		while ((ret = rspamd_sqlite3_run_prstmt (pool, bk->sqlite, bk->prstmt,
+				RSPAMD_STAT_BACKEND_TRANSACTION_START_EXCL)) == SQLITE_BUSY &&
+			   ++ntries <= max_tries) {
+			nanosleep (&sleep_ts, NULL);
+		}
+
 		msg_info_pool ("absent tokenizer conf in %s, creating a new one",
 				bk->fname);
 		g_assert (stcf->clcf->tokenizer != NULL);


More information about the Commits mailing list