superfly/corrosion

Subscription channel can run out of capacity and drop events

Open

#183 opened on Apr 11, 2024

 (2 comments) (0 reactions) (0 assignees)Rust (83 forks)auto 404
buggood first issuehelp wanted

Repository metrics

Stars
 (1,817 stars)
PR merge metrics
 (PR metrics pending)

Description

The broadcast channel used by subscriptions (https://github.com/superfly/corrosion/blob/93561d180e3ebbdd275c9b80b9663b6dcb46e2fa/crates/corro-agent/src/api/public/pubsub.rs#L621) can run out of capacity and skip the events in case the data is read really fast from the disk.

Somehow, in this case, forward_sub_to_sender simply stops forwarding any event - https://github.com/superfly/corrosion/blob/93561d180e3ebbdd275c9b80b9663b6dcb46e2fa/crates/corro-agent/src/api/public/pubsub.rs#L728

It looks like the select! never matches RecvError::Lagged for some reasons.

Contributor guide