From: Vsevolod Stakhov Date: Thu, 5 Feb 2026 09:14:22 +0000 (+0000) Subject: [Fix] re_cache: Use debug level for startup hyperscan load failures X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d17558466abe24bcd92a16582c892a07589e0b8;p=thirdparty%2Frspamd.git [Fix] re_cache: Use debug level for startup hyperscan load failures During worker startup, a "best-effort" synchronous hyperscan load is attempted before hs_helper has finished compiling. When files don't exist yet, the "no valid expressions" message was logged at info level, which is noisy and misleading since this is expected startup behavior. Changed to use debug level when try_load=true (startup probe), while keeping info level for actual failures. Workers will receive async notifications when hs_helper finishes compiling. --- diff --git a/src/libserver/re_cache.c b/src/libserver/re_cache.c index fc3e1e956a..16cd713c05 100644 --- a/src/libserver/re_cache.c +++ b/src/libserver/re_cache.c @@ -3342,13 +3342,30 @@ rspamd_re_cache_load_hyperscan(struct rspamd_re_cache *cache, } } else { - msg_info_re_cache("hyperscan database has NOT been loaded; no valid expressions (%ud classes)%s%s%s", - total_classes, - cache->scope ? " for scope '" : "", - cache->scope ? cache->scope : "", - cache->scope ? "'" : ""); - if (missing_classes && missing_classes->len > 0) { - msg_info_re_cache("all classes failed: %s", missing_classes->str); + /* + * During startup probe (try_load=true), "no valid expressions" is expected + * when hs_helper hasn't finished compiling yet. Use debug level to avoid + * log spam. Workers will receive async notifications when databases are ready. + */ + if (try_load) { + msg_debug_re_cache("hyperscan database has NOT been loaded; no valid expressions (%ud classes)%s%s%s", + total_classes, + cache->scope ? " for scope '" : "", + cache->scope ? cache->scope : "", + cache->scope ? "'" : ""); + if (missing_classes && missing_classes->len > 0) { + msg_debug_re_cache("all classes failed (startup probe): %s", missing_classes->str); + } + } + else { + msg_info_re_cache("hyperscan database has NOT been loaded; no valid expressions (%ud classes)%s%s%s", + total_classes, + cache->scope ? " for scope '" : "", + cache->scope ? cache->scope : "", + cache->scope ? "'" : ""); + if (missing_classes && missing_classes->len > 0) { + msg_info_re_cache("all classes failed: %s", missing_classes->str); + } } cache->hyperscan_loaded = RSPAMD_HYPERSCAN_LOAD_ERROR; }