From 640d330a58d5592a15e5811705387ded834bbdae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20My=C5=9Bliwiec?= Date: Sat, 15 Nov 2025 18:15:26 +0100 Subject: [PATCH 1/2] Change iterations to start from 1 to improve the message: "attempt 0" --- livekit/src/rtc_engine/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/livekit/src/rtc_engine/mod.rs b/livekit/src/rtc_engine/mod.rs index cc8da7ce2..82eb78759 100644 --- a/livekit/src/rtc_engine/mod.rs +++ b/livekit/src/rtc_engine/mod.rs @@ -722,7 +722,7 @@ impl EngineInner { ) }; - for i in 0..RECONNECT_ATTEMPTS { + for i in 1..=RECONNECT_ATTEMPTS { let (is_closed, full_reconnect) = { let running_handle = self.running_handle.read(); (running_handle.closed, running_handle.full_reconnect) @@ -733,7 +733,7 @@ impl EngineInner { } if full_reconnect { - if i == 0 { + if i == 1 { let (tx, rx) = oneshot::channel(); let _ = self.engine_tx.send(EngineEvent::Restarting(tx)); let _ = rx.await; @@ -757,7 +757,7 @@ impl EngineInner { return Ok(()); } } else { - if i == 0 { + if i == 1 { let (tx, rx) = oneshot::channel(); let _ = self.engine_tx.send(EngineEvent::Resuming(tx)); let _ = rx.await; From 4f1bbd7efca888d9e38e331d9eb9deaf870f9c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20My=C5=9Bliwiec?= Date: Sat, 15 Nov 2025 18:26:07 +0100 Subject: [PATCH 2/2] Change reconnecting interval to use MissedTickBehavior::Delay to not exhaust a lot of retries prematurely as with the default one - MissedTickBehavior::Burst --- livekit/src/rtc_engine/mod.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/livekit/src/rtc_engine/mod.rs b/livekit/src/rtc_engine/mod.rs index 82eb78759..bfc694a9a 100644 --- a/livekit/src/rtc_engine/mod.rs +++ b/livekit/src/rtc_engine/mod.rs @@ -17,7 +17,7 @@ use std::{borrow::Cow, fmt::Debug, sync::Arc, time::Duration}; use libwebrtc::prelude::*; use livekit_api::signal_client::{SignalError, SignalOptions}; use livekit_protocol as proto; -use livekit_runtime::{interval, Interval, JoinHandle}; +use livekit_runtime::{interval, Interval, JoinHandle, MissedTickBehavior}; use parking_lot::{RwLock, RwLockReadGuard}; use thiserror::Error; use tokio::sync::{ @@ -360,6 +360,8 @@ impl EngineInner { session.wait_pc_connection().await?; let (engine_tx, engine_rx) = mpsc::unbounded_channel(); + let mut interval = interval(RECONNECT_INTERVAL); + interval.set_missed_tick_behavior(MissedTickBehavior::Delay); let inner = Arc::new(Self { lk_runtime, engine_tx, @@ -374,7 +376,7 @@ impl EngineInner { }), options, reconnecting_lock: AsyncRwLock::default(), - reconnecting_interval: AsyncMutex::new(interval(RECONNECT_INTERVAL)), + reconnecting_interval: AsyncMutex::new(interval), }); // Start initial tasks