From 0afdc0fc7ffe2cb7a2fa6d47f22b685cbacc7223 Mon Sep 17 00:00:00 2001 From: Stanislav Kazantsev Date: Thu, 15 May 2025 23:18:17 +0600 Subject: remove room without listeners from Notifier.room_to_user_streams (#18380) Co-authored-by: Andrew Morgan --- changelog.d/18380.misc | 1 + synapse/notifier.py | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 changelog.d/18380.misc diff --git a/changelog.d/18380.misc b/changelog.d/18380.misc new file mode 100644 index 0000000000..5d6017be26 --- /dev/null +++ b/changelog.d/18380.misc @@ -0,0 +1 @@ +Fix a memory leak in `_NotifierUserStream`. \ No newline at end of file diff --git a/synapse/notifier.py b/synapse/notifier.py index 1914d0c914..6190432b87 100644 --- a/synapse/notifier.py +++ b/synapse/notifier.py @@ -158,6 +158,9 @@ class _NotifierUserStream: lst = notifier.room_to_user_streams.get(room, set()) lst.discard(self) + if not lst: + notifier.room_to_user_streams.pop(room, None) + notifier.user_to_user_stream.pop(self.user_id) def count_listeners(self) -> int: -- cgit 1.5.1