From 17dc9871d68827991ebc5fd0ea4555fb7ecfa855 Mon Sep 17 00:00:00 2001 From: Maxim Raznatovski Date: Tue, 28 Oct 2025 21:46:54 +0100 Subject: [PATCH] Fix buffered generator hang by ensuring None sentinel delivery (#2566) --- music_assistant/helpers/buffered_generator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/music_assistant/helpers/buffered_generator.py b/music_assistant/helpers/buffered_generator.py index 42902d12..523b4883 100644 --- a/music_assistant/helpers/buffered_generator.py +++ b/music_assistant/helpers/buffered_generator.py @@ -78,8 +78,10 @@ async def buffered( if not generator_consumed: await close_async_generator(generator) # Signal end of stream by putting None - with contextlib.suppress(asyncio.QueueFull): - buffer.put_nowait(None) + # We must wait for space in the queue if needed, otherwise the consumer may + # hang waiting for data that will never come + if not cancelled.is_set(): + await buffer.put(None) # Start the producer task loop = asyncio.get_running_loop() -- 2.34.1