From a3ad04528606db44c23200811ae68618ad17cd80 Mon Sep 17 00:00:00 2001
From: Erik Johnston <erik@matrix.org>
Date: Fri, 17 Jul 2020 14:11:05 +0100
Subject: [PATCH] Fix TypeError in synapse.notifier (#7880)

Fixes #7774
---
 changelog.d/7880.bugfix    | 1 +
 synapse/handlers/device.py | 8 ++++++++
 2 files changed, 9 insertions(+)
 create mode 100644 changelog.d/7880.bugfix

diff --git a/changelog.d/7880.bugfix b/changelog.d/7880.bugfix
new file mode 100644
index 0000000000..356add0996
--- /dev/null
+++ b/changelog.d/7880.bugfix
@@ -0,0 +1 @@
+Fix "TypeError in `synapse.notifier`" exceptions.
diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py
index f947aa1627..db417d60de 100644
--- a/synapse/handlers/device.py
+++ b/synapse/handlers/device.py
@@ -421,6 +421,10 @@ class DeviceHandler(DeviceWorkerHandler):
         """Notify that a user's device(s) has changed. Pokes the notifier, and
         remote servers if the user is local.
         """
+        if not device_ids:
+            # No changes to notify about, so this is a no-op.
+            return
+
         users_who_share_room = await self.store.get_users_who_share_room_with_user(
             user_id
         )
@@ -436,6 +440,10 @@ class DeviceHandler(DeviceWorkerHandler):
             user_id, device_ids, list(hosts)
         )
 
+        if not position:
+            # This should only happen if there are no updates, so we bail.
+            return
+
         for device_id in device_ids:
             logger.debug(
                 "Notifying about update %r/%r, ID: %r", user_id, device_id, position
-- 
GitLab