Browse Source

Don't panic if events are lagged

master
Alex Mikhalev 4 years ago
parent
commit
cf9a7a02ef
  1. 10
      src/update_listener.rs

10
src/update_listener.rs

@ -7,7 +7,7 @@ use tokio::{ @@ -7,7 +7,7 @@ use tokio::{
sync::{broadcast, oneshot},
task::JoinHandle,
};
use tracing::{trace, trace_span};
use tracing::{trace, trace_span, warn};
use tracing_futures::Instrument;
struct UpdateListenerTask {
@ -21,13 +21,17 @@ impl UpdateListenerTask { @@ -21,13 +21,17 @@ impl UpdateListenerTask {
event: Result<SectionEvent, broadcast::RecvError>,
) -> eyre::Result<()> {
let event = match event {
Ok(ev) => ev,
Err(broadcast::RecvError::Closed) => {
trace!("section events channel closed");
self.running = false;
return Ok(());
}
e => e,
}?;
Err(broadcast::RecvError::Lagged(n)) => {
warn!("section events lagged by {}", n);
return Ok(());
}
};
if let Some((sec_id, state)) = match event {
SectionEvent::RunStart(_, sec) | SectionEvent::RunUnpause(_, sec) => {
Some((sec.id, true))

Loading…
Cancel
Save