commit 4ebb7dc: [Fix] Fix http maps shared memory cache cleanup
Vsevolod Stakhov
vsevolod at highsecure.ru
Sat Feb 12 13:07:06 UTC 2022
Author: Vsevolod Stakhov
Date: 2022-02-12 13:03:15 +0000
URL: https://github.com/rspamd/rspamd/commit/4ebb7dcf7fce6459c6d60813d136074c75700240 (HEAD -> master)
[Fix] Fix http maps shared memory cache cleanup
It must be initiated by active http worker as it really has the shm object
available.
---
src/libserver/maps/map.c | 31 ++++++++++++++++++-------------
1 file changed, 18 insertions(+), 13 deletions(-)
diff --git a/src/libserver/maps/map.c b/src/libserver/maps/map.c
index 6348ca8b2..19c6c6e6c 100644
--- a/src/libserver/maps/map.c
+++ b/src/libserver/maps/map.c
@@ -2521,20 +2521,25 @@ rspamd_map_backend_dtor (struct rspamd_map_backend *bk)
rspamd_fstring_free (data->etag);
}
- if (g_atomic_int_compare_and_exchange (&data->cache->available, 1, 0)) {
- if (data->cur_cache_cbd) {
- msg_info ("clear shared memory cache for a map in %s on backend %s closing",
- data->cur_cache_cbd->shm->shm_name,
- bk->uri);
- MAP_RELEASE (data->cur_cache_cbd->shm,
- "rspamd_http_map_cached_cbdata");
- ev_timer_stop (data->cur_cache_cbd->event_loop,
- &data->cur_cache_cbd->timeout);
- g_free (data->cur_cache_cbd);
- data->cur_cache_cbd = NULL;
+ /*
+ * Clear cached file, but check if a worker is an active http worker
+ * as cur_cache_cbd is meaningful merely for active worker, who actually
+ * owns the cache
+ */
+ if (bk->map && bk->map->active_http) {
+ if (g_atomic_int_compare_and_exchange (&data->cache->available, 1, 0)) {
+ if (data->cur_cache_cbd) {
+ msg_info ("clear shared memory cache for a map in %s as backend \"%s\" is closing",
+ data->cur_cache_cbd->shm->shm_name,
+ bk->uri);
+ MAP_RELEASE (data->cur_cache_cbd->shm,
+ "rspamd_http_map_cached_cbdata");
+ ev_timer_stop (data->cur_cache_cbd->event_loop,
+ &data->cur_cache_cbd->timeout);
+ g_free (data->cur_cache_cbd);
+ data->cur_cache_cbd = NULL;
+ }
}
-
- unlink (data->cache->shmem_name);
}
g_free (bk->data.hd);
More information about the Commits
mailing list