]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Send updates to mirrors only if we have some changes
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 27 Jun 2016 11:47:30 +0000 (12:47 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 27 Jun 2016 11:47:30 +0000 (12:47 +0100)
src/fuzzy_storage.c
src/libserver/fuzzy_backend.c
src/libserver/fuzzy_backend.h

index 04292e3633ea0de763b460703229482652d205f8..c182971a5d5bb155b6e4a48683b2ad747f4900d0 100644 (file)
@@ -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 */
index a45d7c6a735a89b457315411f5cfb89c47bc6710..ad7f5c4e5129c8c69e06d9c6b6ce3ceaf3aa613f 100644 (file)
@@ -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,
index 6ce50866dda59405c173b4c30642259753b48f05..a1736b676b8b6b1792cb0e125bdb88d8dc26e77a 100644 (file)
@@ -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