summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2017-05-05 10:34:10 +0100
committerErik Johnston <erik@matrix.org>2017-05-05 10:34:10 +0100
commitf346048a6e9ac798b742d939a38e0cfe71475f38 (patch)
tree3b672a95164df6c82dc7afa05e5c08bfa69945d3
parentMerge pull request #2147 from matrix-org/dbkr/http_request_propagate_error (diff)
downloadsynapse-f346048a6e9ac798b742d939a38e0cfe71475f38.tar.xz
Handle exceptions thrown in handling remote device list updates
-rw-r--r--synapse/handlers/device.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py
index c22f65ce5d..72915b85d8 100644
--- a/synapse/handlers/device.py
+++ b/synapse/handlers/device.py
@@ -17,6 +17,7 @@ from synapse.api.constants import EventTypes
 from synapse.util import stringutils
 from synapse.util.async import Linearizer
 from synapse.util.caches.expiringcache import ExpiringCache
+from synapse.util.retryutils import NotRetryingDestination
 from synapse.util.metrics import measure_func
 from synapse.types import get_domain_from_id, RoomStreamToken
 from twisted.internet import defer
@@ -430,7 +431,21 @@ class DeviceListEduUpdater(object):
             if resync:
                 # Fetch all devices for the user.
                 origin = get_domain_from_id(user_id)
-                result = yield self.federation.query_user_devices(origin, user_id)
+                try:
+                    result = yield self.federation.query_user_devices(origin, user_id)
+                except NotRetryingDestination:
+                    logger.warn(
+                        "Failed to handle device list update for %s,"
+                        " we're not retrying the remote",
+                        user_id,
+                    )
+                    return
+                except Exception:
+                    logger.exception(
+                        "Failed to handle device list update for %s", user_id
+                    )
+                    return
+
                 stream_id = result["stream_id"]
                 devices = result["devices"]
                 yield self.store.update_remote_device_list_cache(