From e3905d56b55be8eed519f28da7ff6af76bffdd8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Tue, 20 Dec 2022 23:16:49 +0100 Subject: [PATCH] deadlock comment --- crates/livekit-core/src/rtc_engine/mod.rs | 3 --- crates/livekit-core/src/rtc_engine/rtc_session.rs | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/livekit-core/src/rtc_engine/mod.rs b/crates/livekit-core/src/rtc_engine/mod.rs index 395ba1b..695ad59 100644 --- a/crates/livekit-core/src/rtc_engine/mod.rs +++ b/crates/livekit-core/src/rtc_engine/mod.rs @@ -66,15 +66,12 @@ pub enum EngineEvent { rtp_receiver: RtpReceiver, streams: Vec, }, - Connected, Resuming, Resumed, - SignalResumed, Restarting, Restarted, } -// // TODO(theomonnom): Smarter retry intervals pub(crate) const RECONNECT_ATTEMPTS: u32 = 10; pub(crate) const RECONNECT_INTERVAL: Duration = Duration::from_millis(300); diff --git a/crates/livekit-core/src/rtc_engine/rtc_session.rs b/crates/livekit-core/src/rtc_engine/rtc_session.rs index 393e03b..93f24fc 100644 --- a/crates/livekit-core/src/rtc_engine/rtc_session.rs +++ b/crates/livekit-core/src/rtc_engine/rtc_session.rs @@ -220,6 +220,7 @@ impl RTCSession { } /// Close the PeerConnections and the SignalClient + #[tracing::instrument] pub async fn close(self) { // Close the tasks self.close_emitter.send(true); @@ -468,13 +469,14 @@ impl SessionInner { }); } + #[tracing::instrument] async fn close(&self) { self.signal_client.close().await; self.publisher_pc.lock().await.close(); self.subscriber_pc.lock().await.close(); } - #[tracing::instrument] + #[tracing::instrument(skip(data))] async fn publish_data( &self, data: &DataPacket, @@ -577,6 +579,7 @@ impl SessionInner { } }; + // TODO(theomonnom) Avoid 15 seconds deadlock on the RTCEngine by recv close here tokio::select! { _ = wait_connected => Ok(()), _ = sleep(MAX_ICE_CONNECT_TIMEOUT) => {