diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2020-03-31 15:18:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-31 15:18:41 +0100 |
commit | 60adcbed919afd5c85442775eca822fec43d816d (patch) | |
tree | e3eb78f52c32da097193fa9b9869e9b6cd1e1f52 | |
parent | Fill in the 'default' field for user-defined push rules (#6639) (diff) | |
download | synapse-60adcbed919afd5c85442775eca822fec43d816d.tar.xz |
Fix "'NoneType' has no attribute start|stop" logcontext errors (#7181)
Fixes #7179.
-rw-r--r-- | changelog.d/7181.misc | 1 | ||||
-rw-r--r-- | synapse/http/site.py | 13 | ||||
-rw-r--r-- | synapse/logging/context.py | 5 |
3 files changed, 12 insertions, 7 deletions
diff --git a/changelog.d/7181.misc b/changelog.d/7181.misc new file mode 100644 index 0000000000..731f4dcb52 --- /dev/null +++ b/changelog.d/7181.misc @@ -0,0 +1 @@ +Clean up some LoggingContext code. diff --git a/synapse/http/site.py b/synapse/http/site.py index e092193c9c..32feb0d968 100644 --- a/synapse/http/site.py +++ b/synapse/http/site.py @@ -193,6 +193,12 @@ class SynapseRequest(Request): self.finish_time = time.time() Request.connectionLost(self, reason) + if self.logcontext is None: + logger.info( + "Connection from %s lost before request headers were read", self.client + ) + return + # we only get here if the connection to the client drops before we send # the response. # @@ -236,13 +242,6 @@ class SynapseRequest(Request): def _finished_processing(self): """Log the completion of this request and update the metrics """ - - if self.logcontext is None: - # this can happen if the connection closed before we read the - # headers (so render was never called). In that case we'll already - # have logged a warning, so just bail out. - return - usage = self.logcontext.get_resource_usage() if self._processing_finished_time is None: diff --git a/synapse/logging/context.py b/synapse/logging/context.py index a8eafb1c7c..3254d6a8df 100644 --- a/synapse/logging/context.py +++ b/synapse/logging/context.py @@ -539,6 +539,11 @@ def set_current_context(context: LoggingContextOrSentinel) -> LoggingContextOrSe Returns: The context that was previously active """ + # everything blows up if we allow current_context to be set to None, so sanity-check + # that now. + if context is None: + raise TypeError("'context' argument may not be None") + current = current_context() if current is not context: |