fix: clear subscriber map on shutdown

Even though it is not a case in the application, the interface could be
used externally
This commit is contained in:
2026-06-07 11:58:04 +03:00
parent 774db2d780
commit d9b52806c0
3 changed files with 6 additions and 2 deletions
+1
View File
@@ -99,6 +99,7 @@ class EventBus(LazyLogging):
async with self._lock: async with self._lock:
for subscription in self._subscribers.values(): for subscription in self._subscribers.values():
subscription.queue.shutdown() subscription.queue.shutdown()
self._subscribers.clear()
async def subscribe(self, topics: list[EventType] | None = None, async def subscribe(self, topics: list[EventType] | None = None,
object_id: str | None = None) -> tuple[str, Queue[SSEvent]]: object_id: str | None = None) -> tuple[str, Queue[SSEvent]]:
@@ -101,7 +101,9 @@ class EventBusView(BaseView):
@apidocs( @apidocs(
tags=["Audit log"], tags=["Audit log"],
summary="Live updates", summary="Live updates",
description="Stream live updates via SSE", description="Stream live updates via SSE. Read-only users may subscribe only when all requested event filters "
"belong to read-safe package and service status events; build log or unfiltered streams require "
"full access. Streams are live-only and do not replay missed events after reconnect.",
permission=UserAccess.Full, permission=UserAccess.Full,
error_400_enabled=True, error_400_enabled=True,
error_404_description="Repository is unknown", error_404_description="Repository is unknown",
+2 -1
View File
@@ -65,9 +65,10 @@ async def test_shutdown(event_bus: EventBus) -> None:
""" """
must shutdown all subscriber queues on shutdown must shutdown all subscriber queues on shutdown
""" """
_, queue = await event_bus.subscribe() subscriber_id, queue = await event_bus.subscribe()
await event_bus.shutdown() await event_bus.shutdown()
assert subscriber_id not in event_bus._subscribers
with pytest.raises(QueueShutDown): with pytest.raises(QueueShutDown):
queue.get_nowait() queue.get_nowait()