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