Reduce the amount of incredibly spammy stack traces. Expected errors (e.g. SynapseErrors) shouldn't have their full trace logged every time. Don't send responses to disconnected requests.

This commit is contained in:
Kegan Dougal 2014-08-19 10:55:44 +01:00
parent 509ce6c137
commit f48792eec4
1 changed files with 13 additions and 1 deletions

View File

@ -132,7 +132,11 @@ class JsonResource(HttpServer, resource.Resource):
{"error": "Unrecognized request"} {"error": "Unrecognized request"}
) )
except CodeMessageException as e: except CodeMessageException as e:
logger.exception(e) if isinstance(e, SynapseError):
logger.error("%s SynapseError: %s - %s", request, e.code,
e.msg)
else:
logger.exception(e)
self._send_response( self._send_response(
request, request,
e.code, e.code,
@ -147,6 +151,14 @@ class JsonResource(HttpServer, resource.Resource):
) )
def _send_response(self, request, code, response_json_object): def _send_response(self, request, code, response_json_object):
# could alternatively use request.notifyFinish() and flip a flag when
# the Deferred fires, but since the flag is RIGHT THERE it seems like
# a waste.
if request._disconnected:
logger.warn(
"Not sending response to request %s, already disconnected.",
request)
return
if not self._request_user_agent_is_curl(request): if not self._request_user_agent_is_curl(request):
json_bytes = encode_canonical_json(response_json_object) json_bytes = encode_canonical_json(response_json_object)