diff options
author | Erik Johnston <erik@matrix.org> | 2015-05-08 19:53:34 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-05-08 19:53:34 +0100 |
commit | 2236ef6c92b7964665f5c43b941754d70aa506d8 (patch) | |
tree | 5befd0effe712d4c4af6264346769f57c9486060 /synapse/util/logcontext.py | |
parent | Add some docs (diff) | |
download | synapse-2236ef6c92b7964665f5c43b941754d70aa506d8.tar.xz |
Fix up leak. Add warnings.
Diffstat (limited to 'synapse/util/logcontext.py')
-rw-r--r-- | synapse/util/logcontext.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/synapse/util/logcontext.py b/synapse/util/logcontext.py index 3dce8d2bf3..a92d518b43 100644 --- a/synapse/util/logcontext.py +++ b/synapse/util/logcontext.py @@ -132,6 +132,13 @@ class PreserveLoggingContext(object): """Restores the current logging context""" LoggingContext.thread_local.current_context = self.current_context + if self.current_context is not LoggingContext.sentinel: + if self.current_context.parent_context is None: + logger.warn( + "Restoring dead context: %s", + self.current_context, + ) + def preserve_context_over_fn(fn, *args, **kwargs): """Takes a function and invokes it with the given arguments, but removes @@ -169,6 +176,8 @@ def preserve_context_over_deferred(deferred): res = d.errback(failure) return res - deferred.addCallbacks(cb, eb) + if deferred.called: + return deferred + deferred.addCallbacks(cb, eb) return d |