-
Notifications
You must be signed in to change notification settings - Fork 9
Closed
Labels
part:channelsAffects channels implementationAffects channels implementationpriority:highAddress this as soon as possibleAddress this as soon as possibletype:bugSomething isn't workingSomething isn't working
Milestone
Description
What happened?
Receivers are not getting destroyed as soon as they go out of scope, because channel implementations hold on to a reference to the Receivers, so that they can put new messages into them.
So when a the task that created a receiver dies, the receiver doesn't, but nobody is reading from it, and the logs get flooded with
Broadcast receiver [chan_name] is full. Oldest message was dropped.
What did you expect instead?
Receivers that go out of scope should get cleaned up.
Affected version(s)
No response
Affected part(s)
Channels, Broadcast, Bidirectional, etc. (part:channels)
Extra information
The solution appears to be to use a weakref to hold on to the receivers in the channel implementations.
And the send methods should check and cleanup any weakrefs to destroyed receivers.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
part:channelsAffects channels implementationAffects channels implementationpriority:highAddress this as soon as possibleAddress this as soon as possibletype:bugSomething isn't workingSomething isn't working
Type
Projects
Status
Done