Skip to content

transmission freezes when response channel is full #74

@rasviitanen

Description

@rasviitanen

Description

We noticed an issue where the response channel will fill up and freeze the transmission if responses are not consumed.

A send call is used to send information to the response channel. It seems that the response channel is a bounded crossbeam-channel, so the sender's send function will block if the channel is full.

With a default sized channel, this occurs after 40000 events.

Meanwhile, the README states:

You don’t have to process responses if you’re not interested in them—simply ignoring them is perfectly safe. Unread responses will be dropped.

Code

response_sender
.send(Response {
status_code: None,
body: None,
duration: clock.elapsed(),
metadata: event.metadata,
error: Some(e.to_string()),
})

History

The bug seems to originate in this commit: 2f004da

Potential ideas

I would propose a solution where everything regarding the responses is put behind a feature flag and then explicitly state that you must consume the response channel if you activate the feature.

I would be happy to implement a fix.
Just let me know if you think the proposed idea would be a good fit for this project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions