You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[mqtt5 0.45.0] - 2026-10-01
Breaking
broker::storage::QueueOp and broker::storage::QueueWriter are no longer public. They described the file backend's internal write-behind channel, which is gone.
Fixed
The file backend's memory no longer grows with QoS 1/2 throughput (#158, #159). Every outbound QoS 1/2 delivery stores an inflight row and removes it on acknowledgement, and every queued message is written and later deleted; these went through an unbounded channel to a single writer task, which fell behind under load. A 30-second QoS 1 flood (16 publishers, 8 subscribers, 256-byte payloads) left about 11 million operations in the channel and the broker at 4.6 GB, against 54 MB on the memory backend. Writes and removals now update a shared pending map in place, so a row removed before it reaches the disk cancels its write immediately, and the writer flushes that map every 250 ms or once it holds 8192 rows. Pending state is bounded by the rows that are actually open, so the same flood now holds the broker at 55 MB.