mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 16:28:15 +00:00
2490d4ee22
fix(notify): serialize persisted config read-modify-write to prevent lost updates (backlog#968) The notify config write path performed a read -> modify -> write over the persisted server config with no serialization: two concurrent updates could both read the same base config, apply disjoint changes, and race their full-config writes. The later write silently overwrote the earlier one, losing updates (e.g. adding two targets concurrently could drop one) with no error surfaced. Guard the whole read -> modify -> write with a process-global tokio Mutex (NOTIFY_CONFIG_RMW_LOCK). The persisted config is a single process-global resource, so serializing the RMW makes concurrent updates apply in sequence and every change is preserved. The lock is only acquired inside update_server_config and is released before the in-memory reload, so it never nests with the per-manager config RwLock and introduces no lock-ordering risk. The RMW sequence is extracted into serialized_read_modify_write with injected read/save operations so the exact production serialization path is exercised by a regression test that concurrently adds 32 distinct targets and asserts all of them survive. Refs: https://github.com/rustfs/backlog/issues/968
RustFS Notify - Event Notification System
Real-time event notification and messaging system for RustFS distributed object storage
📖 Documentation
· 🐛 Bug Reports
· 💬 Discussions
📖 Overview
RustFS Notify provides real-time event notification and messaging capabilities for the RustFS distributed object storage system. For the complete RustFS experience, please visit the main RustFS repository.
✨ Features
- Real-time event streaming and notifications
- Multiple notification targets (HTTP, Kafka, Redis, Email)
- Event filtering and routing based on criteria
- Message queuing with guaranteed delivery
- Event replay and auditing capabilities
- High-throughput messaging with batching support
📚 Documentation
For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.
📄 License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
