mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-12-22 01:44:58 -05:00
Merge pull request #4643 from matrix-org/erikj/catch_exceptions
Correctly handle RequestSendFailed exceptions
This commit is contained in:
commit
d1b060b492
1
changelog.d/4643.misc
Normal file
1
changelog.d/4643.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Reduce number of exceptions we log
|
@ -35,7 +35,7 @@ from unpaddedbase64 import decode_base64
|
|||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.errors import Codes, SynapseError
|
from synapse.api.errors import Codes, RequestSendFailed, SynapseError
|
||||||
from synapse.util import logcontext, unwrapFirstError
|
from synapse.util import logcontext, unwrapFirstError
|
||||||
from synapse.util.logcontext import (
|
from synapse.util.logcontext import (
|
||||||
LoggingContext,
|
LoggingContext,
|
||||||
@ -656,7 +656,7 @@ def _handle_key_deferred(verify_request):
|
|||||||
try:
|
try:
|
||||||
with PreserveLoggingContext():
|
with PreserveLoggingContext():
|
||||||
_, key_id, verify_key = yield verify_request.deferred
|
_, key_id, verify_key = yield verify_request.deferred
|
||||||
except IOError as e:
|
except (IOError, RequestSendFailed) as e:
|
||||||
logger.warn(
|
logger.warn(
|
||||||
"Got IOError when downloading keys for %s: %s %s",
|
"Got IOError when downloading keys for %s: %s %s",
|
||||||
server_name, type(e).__name__, str(e),
|
server_name, type(e).__name__, str(e),
|
||||||
|
@ -42,7 +42,7 @@ from signedjson.sign import sign_json
|
|||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.errors import SynapseError
|
from synapse.api.errors import RequestSendFailed, SynapseError
|
||||||
from synapse.metrics.background_process_metrics import run_as_background_process
|
from synapse.metrics.background_process_metrics import run_as_background_process
|
||||||
from synapse.types import get_domain_from_id
|
from synapse.types import get_domain_from_id
|
||||||
from synapse.util.logcontext import run_in_background
|
from synapse.util.logcontext import run_in_background
|
||||||
@ -191,6 +191,11 @@ class GroupAttestionRenewer(object):
|
|||||||
yield self.store.update_attestation_renewal(
|
yield self.store.update_attestation_renewal(
|
||||||
group_id, user_id, attestation
|
group_id, user_id, attestation
|
||||||
)
|
)
|
||||||
|
except RequestSendFailed as e:
|
||||||
|
logger.warning(
|
||||||
|
"Failed to renew attestation of %r in %r: %s",
|
||||||
|
user_id, group_id, e,
|
||||||
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("Error renewing attestation of %r in %r",
|
logger.exception("Error renewing attestation of %r in %r",
|
||||||
user_id, group_id)
|
user_id, group_id)
|
||||||
|
@ -20,7 +20,7 @@ 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
|
from synapse.api.errors import FederationDeniedError, 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,7 +504,7 @@ 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:
|
except (NotRetryingDestination, RequestSendFailed):
|
||||||
# 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(
|
||||||
|
@ -20,7 +20,7 @@ from six import iteritems
|
|||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.errors import HttpResponseException, SynapseError
|
from synapse.api.errors import HttpResponseException, RequestSendFailed, SynapseError
|
||||||
from synapse.types import get_domain_from_id
|
from synapse.types import get_domain_from_id
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -46,13 +46,19 @@ def _create_rerouter(func_name):
|
|||||||
# when the remote end responds with things like 403 Not
|
# when the remote end responds with things like 403 Not
|
||||||
# In Group, we can communicate that to the client instead
|
# In Group, we can communicate that to the client instead
|
||||||
# of a 500.
|
# of a 500.
|
||||||
def h(failure):
|
def http_response_errback(failure):
|
||||||
failure.trap(HttpResponseException)
|
failure.trap(HttpResponseException)
|
||||||
e = failure.value
|
e = failure.value
|
||||||
if e.code == 403:
|
if e.code == 403:
|
||||||
raise e.to_synapse_error()
|
raise e.to_synapse_error()
|
||||||
return failure
|
return failure
|
||||||
d.addErrback(h)
|
|
||||||
|
def request_failed_errback(failure):
|
||||||
|
failure.trap(RequestSendFailed)
|
||||||
|
raise SynapseError(502, "Failed to contact group server")
|
||||||
|
|
||||||
|
d.addErrback(http_response_errback)
|
||||||
|
d.addErrback(request_failed_errback)
|
||||||
return d
|
return d
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user