]> git.ipfire.org Git - thirdparty/rspamd.git/commit
[Feature] fuzzy: per-hash introspection via rspamadm control fuzzyhash
authorVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 24 Jul 2026 18:18:47 +0000 (19:18 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 24 Jul 2026 18:18:47 +0000 (19:18 +0100)
commitf94ecd1de68116a54da9523082a78d64d87f9db0
tree4802675cb2102ac83a5bef339c69092e27268030
parentcb8de0c34132ecb7fb785b78f615c924dc1285c2
[Feature] fuzzy: per-hash introspection via rspamadm control fuzzyhash

rspamadm control fuzzyhash <128 hex digest> asks all fuzzy workers for
storage-side diagnostics of a specific hash: flag slots and values,
creation time, remaining ttl and, using the persisted shingle set,
slot ownership (owned/foreign/vacant out of total). Ownership directly
answers the key false-positive triage question: can this hash still
produce fuzzy matches, or has its shingle anchor decayed?

Implemented as a new inspect backend API: the redis backend gathers
everything in a single server-side script round trip; sqlite queries
the digests and shingles tables synchronously. The worker control
handler replies asynchronously from the backend callback (the control
pipe is persistent) using the same fd-attachment mechanism as
fuzzy_stat.
src/libserver/fuzzy_backend/fuzzy_backend.c
src/libserver/fuzzy_backend/fuzzy_backend.h
src/libserver/fuzzy_backend/fuzzy_backend_redis.c
src/libserver/fuzzy_backend/fuzzy_backend_redis.h
src/libserver/fuzzy_backend/fuzzy_backend_sqlite.c
src/libserver/fuzzy_backend/fuzzy_backend_sqlite.h
src/libserver/fuzzy_storage_internal.h
src/libserver/fuzzy_storage_stat.c
src/libserver/rspamd_control.c
src/libserver/rspamd_control.h
src/rspamadm/control.c