From 60e4ce8e3f07e4eaeb113b77d5bf7dd7a5cbc6bc Mon Sep 17 00:00:00 2001 From: Alan George Date: Wed, 23 Sep 2026 22:01:56 -0600 Subject: [PATCH 1/2] Increase the data track event buffer to avoid a disconnect deadlock. A burst of track lifecycle events can fill the 16-slot channel and block the manager during room disconnect. --- .changeset/increase_data_track_event_buffer.md | 5 +++++ livekit-datatrack/src/local/manager.rs | 5 ++++- livekit-datatrack/src/remote/manager.rs | 5 ++++- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/increase_data_track_event_buffer.md diff --git a/.changeset/increase_data_track_event_buffer.md b/.changeset/increase_data_track_event_buffer.md new file mode 100644 index 000000000..22cea4ead --- /dev/null +++ b/.changeset/increase_data_track_event_buffer.md @@ -0,0 +1,5 @@ +--- +livekit-datatrack: patch +--- + +Increase the local and remote data track event buffers so a burst of track lifecycle events cannot fill the channel and deadlock room disconnect. diff --git a/livekit-datatrack/src/local/manager.rs b/livekit-datatrack/src/local/manager.rs index 5645ef2fb..e485b82d7 100644 --- a/livekit-datatrack/src/local/manager.rs +++ b/livekit-datatrack/src/local/manager.rs @@ -326,7 +326,10 @@ impl Manager { const FRAME_BUFFER_COUNT: usize = 16; /// Maximum number of input and output events to buffer. - const EVENT_BUFFER_COUNT: usize = 16; + /// + /// Must exceed a burst of track lifecycle events. A full channel blocks + /// the manager and can deadlock room disconnect. + const EVENT_BUFFER_COUNT: usize = 512; } /// Task for an individual published data track. diff --git a/livekit-datatrack/src/remote/manager.rs b/livekit-datatrack/src/remote/manager.rs index 67fb86cf4..b7a40418d 100644 --- a/livekit-datatrack/src/remote/manager.rs +++ b/livekit-datatrack/src/remote/manager.rs @@ -443,7 +443,10 @@ impl Manager { const PACKET_BUFFER_COUNT: usize = 16; /// Maximum number of input and output events to buffer. - const EVENT_BUFFER_COUNT: usize = 16; + /// + /// Must exceed a burst of track lifecycle events. A full channel blocks + /// the manager and can deadlock room disconnect. + const EVENT_BUFFER_COUNT: usize = 512; } /// Information and state for a remote data track. From ea2b8875836a73a5ef3f16a80f98a80b97cd02fa Mon Sep 17 00:00:00 2001 From: Alan George Date: Wed, 23 Sep 2026 22:51:21 -0600 Subject: [PATCH 2/2] Fix changeset --- .changeset/increase_data_track_event_buffer.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.changeset/increase_data_track_event_buffer.md b/.changeset/increase_data_track_event_buffer.md index 22cea4ead..2d4b8af78 100644 --- a/.changeset/increase_data_track_event_buffer.md +++ b/.changeset/increase_data_track_event_buffer.md @@ -1,5 +1,9 @@ --- livekit-datatrack: patch +livekit: patch +livekit-uniffi: patch +livekit-capture: patch +livekit-ffi: patch --- Increase the local and remote data track event buffers so a burst of track lifecycle events cannot fill the channel and deadlock room disconnect.