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
A stream closed or dropped while the client is disconnected releases its
channel. Its UNSUBSCRIBE reached the network task between two reconnection
attempts and, being non-retryable, was failed with DisconnectedByPeer
without the subscription being forgotten. The reconnection then subscribed the
server again to the channel, for a subscriber that no longer existed, and
every later subscribe to it on the same Client was refused with AlreadySubscribed until a message happened to arrive on it. A channel that
stays quiet, like a per-user channel while its user is offline, stayed blocked
for the life of the Client. Such an UNSUBSCRIBE now succeeds without being
sent: a fresh connection is subscribed to nothing, so it has nothing left to
do. PubSubStream::close therefore returns Ok during an outage.
A subscription whose stream is gone no longer refuses a new subscriber. A subscribe to a channel whose previous stream had been dropped was refused
with AlreadySubscribed until the server confirmed the UNSUBSCRIBE of that
stream, so a caller that subscribed again right after a drop had to retry. It
now takes the channel over at once.
The crate builds again with warnings denied on Rust 1.99. That toolchain
deprecates AtomicUsize::fetch_update in favour of try_update, which the
1.88 MSRV does not have, so the test-only fault-injection countdown now
decrements through a compare_exchange_weak loop that both accept. Its clippy
also reports #[must_use] on BlockingCommands::monitor as redundant -- an async fn returns a future, already must_use -- so the attribute is gone,
with no change to what a caller is warned about.