forked from MirrorHub/synapse
Fix exception reporting due to HTTP request errors. (#7556)
These are business as usual errors, rather than stuff we want to log at error.
This commit is contained in:
parent
ac481a738e
commit
547e4dd83e
4 changed files with 24 additions and 4 deletions
1
changelog.d/7556.misc
Normal file
1
changelog.d/7556.misc
Normal file
|
@ -0,0 +1 @@
|
|||
Stop logging some expected HTTP request errors as exceptions.
|
|
@ -26,7 +26,7 @@ from twisted.web.resource import NoResource
|
|||
|
||||
import synapse
|
||||
import synapse.events
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.api.errors import HttpResponseException, RequestSendFailed, SynapseError
|
||||
from synapse.api.urls import (
|
||||
CLIENT_API_PREFIX,
|
||||
FEDERATION_PREFIX,
|
||||
|
@ -202,9 +202,14 @@ class KeyUploadServlet(RestServlet):
|
|||
# is there.
|
||||
auth_headers = request.requestHeaders.getRawHeaders(b"Authorization", [])
|
||||
headers = {"Authorization": auth_headers}
|
||||
try:
|
||||
result = await self.http_client.post_json_get_json(
|
||||
self.main_uri + request.uri.decode("ascii"), body, headers=headers
|
||||
)
|
||||
except HttpResponseException as e:
|
||||
raise e.to_synapse() from e
|
||||
except RequestSendFailed as e:
|
||||
raise SynapseError(502, "Failed to talk to master") from e
|
||||
|
||||
return 200, result
|
||||
else:
|
||||
|
|
|
@ -40,6 +40,7 @@ from synapse.api.errors import (
|
|||
Codes,
|
||||
FederationDeniedError,
|
||||
FederationError,
|
||||
HttpResponseException,
|
||||
RequestSendFailed,
|
||||
SynapseError,
|
||||
)
|
||||
|
@ -1036,6 +1037,12 @@ class FederationHandler(BaseHandler):
|
|||
# TODO: We can probably do something more intelligent here.
|
||||
return True
|
||||
except SynapseError as e:
|
||||
logger.info("Failed to backfill from %s because %s", dom, e)
|
||||
continue
|
||||
except HttpResponseException as e:
|
||||
if 400 <= e.code < 500:
|
||||
raise e.to_synapse_error()
|
||||
|
||||
logger.info("Failed to backfill from %s because %s", dom, e)
|
||||
continue
|
||||
except CodeMessageException as e:
|
||||
|
|
|
@ -144,6 +144,11 @@ def _handle_json_response(reactor, timeout_sec, request, response):
|
|||
d = timeout_deferred(d, timeout=timeout_sec, reactor=reactor)
|
||||
|
||||
body = yield make_deferred_yieldable(d)
|
||||
except TimeoutError as e:
|
||||
logger.warning(
|
||||
"{%s} [%s] Timed out reading response", request.txn_id, request.destination,
|
||||
)
|
||||
raise RequestSendFailed(e, can_retry=True) from e
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
"{%s} [%s] Error reading response: %s",
|
||||
|
@ -424,6 +429,8 @@ class MatrixFederationHttpClient(object):
|
|||
)
|
||||
|
||||
response = yield request_deferred
|
||||
except TimeoutError as e:
|
||||
raise RequestSendFailed(e, can_retry=True) from e
|
||||
except DNSLookupError as e:
|
||||
raise_from(RequestSendFailed(e, can_retry=retry_on_dns_fail), e)
|
||||
except Exception as e:
|
||||
|
|
Loading…
Reference in a new issue