Handle exceptions thrown in handling remote device list updates

This commit is contained in:
Erik Johnston 2017-05-05 10:34:10 +01:00
parent 60833c8978
commit f346048a6e

View File

@ -17,6 +17,7 @@ from synapse.api.constants import EventTypes
from synapse.util import stringutils from synapse.util import stringutils
from synapse.util.async import Linearizer from synapse.util.async import Linearizer
from synapse.util.caches.expiringcache import ExpiringCache from synapse.util.caches.expiringcache import ExpiringCache
from synapse.util.retryutils import NotRetryingDestination
from synapse.util.metrics import measure_func from synapse.util.metrics import measure_func
from synapse.types import get_domain_from_id, RoomStreamToken from synapse.types import get_domain_from_id, RoomStreamToken
from twisted.internet import defer from twisted.internet import defer
@ -430,7 +431,21 @@ class DeviceListEduUpdater(object):
if resync: if resync:
# Fetch all devices for the user. # Fetch all devices for the user.
origin = get_domain_from_id(user_id) 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"] stream_id = result["stream_id"]
devices = result["devices"] devices = result["devices"]
yield self.store.update_remote_device_list_cache( yield self.store.update_remote_device_list_cache(