diff options
author | Amber Brown <hawkowl@atleastfornow.net> | 2018-08-21 03:47:52 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-21 03:47:52 +1000 |
commit | 23d7e63a4abbdc19694099902c03b6b7c5144df4 (patch) | |
tree | e4c65afdc782c62f8993a4b7343b5e7437a15d45 /synapse/util | |
parent | changelog (diff) | |
parent | changelog (diff) | |
download | synapse-23d7e63a4abbdc19694099902c03b6b7c5144df4.tar.xz |
Merge pull request #3723 from matrix-org/rav/fix_logcontext_disaster
Fix exceptions when a connection is closed before we read the headers
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/logcontext.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/synapse/util/logcontext.py b/synapse/util/logcontext.py index 07e83fadda..a0c2d37610 100644 --- a/synapse/util/logcontext.py +++ b/synapse/util/logcontext.py @@ -385,7 +385,13 @@ class LoggingContextFilter(logging.Filter): context = LoggingContext.current_context() for key, value in self.defaults.items(): setattr(record, key, value) - context.copy_to(record) + + # context should never be None, but if it somehow ends up being, then + # we end up in a death spiral of infinite loops, so let's check, for + # robustness' sake. + if context is not None: + context.copy_to(record) + return True @@ -396,7 +402,9 @@ class PreserveLoggingContext(object): __slots__ = ["current_context", "new_context", "has_parent"] - def __init__(self, new_context=LoggingContext.sentinel): + def __init__(self, new_context=None): + if new_context is None: + new_context = LoggingContext.sentinel self.new_context = new_context def __enter__(self): |