mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-28 17:18:58 +00:00
c0d5f938f2
* fix(audit): resolve AB-BA lock-order deadlock between registry and stream_cancellers (backlog#961) `AuditSystem::runtime_status_snapshot` acquired `stream_cancellers.read()` before `registry.lock()`, while every other path that holds both locks (`clear_runtime_targets`, `AuditRuntimeFacade::replace_targets`) acquires `registry` first. Under concurrency (e.g. admin status polling racing a config reload) this AB-BA ordering could deadlock the whole audit control plane with no self-recovery. Reorder `runtime_status_snapshot` to acquire `registry` before `stream_cancellers`, unifying the global lock order to `registry -> stream_cancellers` across all double-lock paths, and add a multi-threaded regression test that hammers both critical sections with a timeout guard to fail fast if the ordering regresses. Refs: https://github.com/rustfs/backlog/issues/961 * docs(audit): reword AB-BA to ABBA to satisfy typos check (backlog#961)