Merge pull request #4668 from matrix-org/erikj/catch_exceptions

Correctly handle HttpResponseException when handling device updates
pull/4676/head
Erik Johnston 2019-02-18 16:55:43 +00:00 committed by GitHub
commit 459d3d5046
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 5 deletions

1
changelog.d/4668.misc Normal file
View File

@ -0,0 +1 @@
Reduce number of exceptions we log

View File

@ -20,7 +20,11 @@ from twisted.internet import defer
from synapse.api import errors from synapse.api import errors
from synapse.api.constants import EventTypes from synapse.api.constants import EventTypes
from synapse.api.errors import FederationDeniedError, RequestSendFailed from synapse.api.errors import (
FederationDeniedError,
HttpResponseException,
RequestSendFailed,
)
from synapse.types import RoomStreamToken, get_domain_from_id from synapse.types import RoomStreamToken, get_domain_from_id
from synapse.util import stringutils from synapse.util import stringutils
from synapse.util.async_helpers import Linearizer from synapse.util.async_helpers import Linearizer
@ -504,13 +508,13 @@ class DeviceListEduUpdater(object):
origin = get_domain_from_id(user_id) origin = get_domain_from_id(user_id)
try: try:
result = yield self.federation.query_user_devices(origin, user_id) result = yield self.federation.query_user_devices(origin, user_id)
except (NotRetryingDestination, RequestSendFailed): except (
NotRetryingDestination, RequestSendFailed, HttpResponseException,
):
# TODO: Remember that we are now out of sync and try again # TODO: Remember that we are now out of sync and try again
# later # later
logger.warn( logger.warn(
"Failed to handle device list update for %s," "Failed to handle device list update for %s", user_id,
" we're not retrying the remote",
user_id,
) )
# We abort on exceptions rather than accepting the update # We abort on exceptions rather than accepting the update
# as otherwise synapse will 'forget' that its device list # as otherwise synapse will 'forget' that its device list