2 files changed, 4 insertions, 0 deletions
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:
|