Follow-up from #72.
A consumer that drops its subscription stream without calling disconnect_stream leaves the mpsc::Sender in the streams map. Every subsequent notification for that subscription fails with SendError, which the reader task logs at error!, and the entry stays until the client is closed.
Since #72 the reader clones the sender out of the map before sending, so on SendError it could just remove the entry (or check tx.is_closed() first) and log at debug! instead of propagating the error. A later disconnect_stream for that id would then log "Unknown subscription ID", which should be downgraded from error! as well.
🤖 Generated with Claude Code
Follow-up from #72.
A consumer that drops its subscription stream without calling
disconnect_streamleaves thempsc::Senderin thestreamsmap. Every subsequent notification for that subscription fails withSendError, which the reader task logs aterror!, and the entry stays until the client is closed.Since #72 the reader clones the sender out of the map before sending, so on
SendErrorit could just remove the entry (or checktx.is_closed()first) and log atdebug!instead of propagating the error. A laterdisconnect_streamfor that id would then log "Unknown subscription ID", which should be downgraded fromerror!as well.🤖 Generated with Claude Code