-
Notifications
You must be signed in to change notification settings - Fork 18
Description
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
libhoney-rust/src/transmission.rs
Lines 152 to 159 in d98ffe3
| 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.