summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2020-03-31 15:18:41 +0100
committerGitHub <noreply@github.com>2020-03-31 15:18:41 +0100
commit60adcbed919afd5c85442775eca822fec43d816d (patch)
treee3eb78f52c32da097193fa9b9869e9b6cd1e1f52
parentFill in the 'default' field for user-defined push rules (#6639) (diff)
downloadsynapse-60adcbed919afd5c85442775eca822fec43d816d.tar.xz
Fix "'NoneType' has no attribute start|stop" logcontext errors (#7181)
Fixes #7179.
-rw-r--r--changelog.d/7181.misc1
-rw-r--r--synapse/http/site.py13
-rw-r--r--synapse/logging/context.py5
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: