diff options
author | Erik Johnston <erik@matrix.org> | 2017-05-05 10:34:10 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2017-05-05 10:34:10 +0100 |
commit | f346048a6e9ac798b742d939a38e0cfe71475f38 (patch) | |
tree | 3b672a95164df6c82dc7afa05e5c08bfa69945d3 /synapse/handlers/device.py | |
parent | Merge pull request #2147 from matrix-org/dbkr/http_request_propagate_error (diff) | |
download | synapse-f346048a6e9ac798b742d939a38e0cfe71475f38.tar.xz |
Handle exceptions thrown in handling remote device list updates
Diffstat (limited to 'synapse/handlers/device.py')
-rw-r--r-- | synapse/handlers/device.py | 17 |
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( |