Siavash Sameni
a52b011fb5
Mirror to GitHub / mirror (push) Failing after 24s
Build Release Binaries / build-amd64 (push) Failing after 3m41s
feat(relay): replace global Mutex<RoomManager> with DashMap sharding
Eliminates the single-lock bottleneck for media forwarding. Before:
all participants across all rooms competed for one Mutex. Now rooms
are stored in DashMap (64 internal shards with per-shard RwLocks).
Changes:
- RoomManager.rooms: HashMap → DashMap<String, Room>
- Per-room quality tracking (qualities, current_tier moved into Room)
- Arc<Mutex<RoomManager>> → Arc<RoomManager> everywhere
- 20 .lock().await sites removed across room.rs, main.rs, federation.rs, ws.rs
- federation forward_to_peers: clone peer list, release lock, then send
- ACL uses std::sync::Mutex (rarely accessed, non-async)
Concurrency improvement:
- Before: 100 rooms × 10 people = 1000 tasks → 1 Mutex
- After: distributed across 64 DashMap shards, ~15 tasks per shard avg
- Rooms are fully independent — room A never blocks room B
314 tests passing, 0 regressions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 12:17:57 +04:00
..
2026-04-06 09:21:35 +00:00
2026-04-10 15:20:21 +04:00
2026-03-28 05:30:11 +04:00
2026-04-13 11:54:37 +04:00
2026-04-10 15:20:21 +04:00
2026-04-12 17:39:59 +04:00
2026-03-28 05:30:11 +04:00
2026-03-28 08:16:57 +04:00
2026-03-27 12:45:07 +04:00
2026-03-28 13:18:50 +04:00
2026-03-29 17:36:55 +04:00
2026-04-13 11:34:01 +04:00
2026-04-12 17:39:59 +04:00
2026-04-13 11:34:01 +04:00
2026-04-08 10:00:21 +04:00
2026-04-13 11:54:37 +04:00
2026-04-07 18:32:24 +04:00
2026-04-12 19:38:37 +04:00
2026-04-13 09:54:52 +04:00
2026-04-13 09:54:52 +04:00
2026-04-13 09:54:52 +04:00
2026-04-13 12:17:57 +04:00
2026-04-07 21:33:05 +04:00
2026-04-07 18:32:24 +04:00
2026-04-13 11:54:37 +04:00
2026-03-28 10:29:17 +04:00
2026-03-28 05:30:11 +04:00
2026-04-10 15:20:21 +04:00
2026-03-30 14:27:52 +04:00
2026-03-28 09:14:25 +04:00