From: Vsevolod Stakhov Date: Mon, 27 Jun 2016 11:47:30 +0000 (+0100) Subject: [Fix] Send updates to mirrors only if we have some changes X-Git-Tag: 1.3.0~246 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=948d6c90b1160dea389aca1662fad5c325e5d552;p=thirdparty%2Frspamd.git [Fix] Send updates to mirrors only if we have some changes --- diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 04292e3633..c182971a5d 100644 --- a/src/fuzzy_storage.c +++ b/src/fuzzy_storage.c @@ -423,13 +423,15 @@ rspamd_fuzzy_process_updates_queue (struct rspamd_fuzzy_storage_ctx *ctx, cur = g_list_next (cur); } - if (rspamd_fuzzy_backend_finish_update (ctx->backend, source)) { + if (rspamd_fuzzy_backend_finish_update (ctx->backend, source, nupdates > 0)) { ctx->stat.fuzzy_hashes = rspamd_fuzzy_backend_count (ctx->backend); - for (i = 0; i < ctx->mirrors->len; i ++) { - m = g_ptr_array_index (ctx->mirrors, i); + if (nupdates > 0) { + for (i = 0; i < ctx->mirrors->len; i ++) { + m = g_ptr_array_index (ctx->mirrors, i); - rspamd_fuzzy_send_update_mirror (ctx, m); + rspamd_fuzzy_send_update_mirror (ctx, m); + } } /* Clear updates */ diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index a45d7c6a73..ad7f5c4e51 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -751,17 +751,19 @@ rspamd_fuzzy_backend_add (struct rspamd_fuzzy_backend *backend, gboolean rspamd_fuzzy_backend_finish_update (struct rspamd_fuzzy_backend *backend, - const gchar *source) + const gchar *source, gboolean version_bump) { - gint rc, wal_frames, wal_checkpointed, ver; + gint rc = SQLITE_OK, wal_frames, wal_checkpointed, ver; /* Get and update version */ - ver = rspamd_fuzzy_backend_version (backend, source); - ++ver; + if (version_bump) { + ver = rspamd_fuzzy_backend_version (backend, source); + ++ver; - rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE, + rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE, RSPAMD_FUZZY_BACKEND_SET_VERSION, (gint64)ver, (gint64)time (NULL), source); + } if (rc == SQLITE_OK) { rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE, diff --git a/src/libserver/fuzzy_backend.h b/src/libserver/fuzzy_backend.h index 6ce50866dd..a1736b676b 100644 --- a/src/libserver/fuzzy_backend.h +++ b/src/libserver/fuzzy_backend.h @@ -72,7 +72,7 @@ gboolean rspamd_fuzzy_backend_del ( * Commit updates to storage */ gboolean rspamd_fuzzy_backend_finish_update (struct rspamd_fuzzy_backend *backend, - const gchar *source); + const gchar *source, gboolean version_bump); /** * Sync storage