diff options
author | Erik Johnston <erik@matrix.org> | 2015-05-08 16:52:49 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-05-08 16:52:49 +0100 |
commit | da1aa07db5f29436aeaae8d0dcbfe9872b4a7233 (patch) | |
tree | eb508e03e945d04d3a89b73751e605b739d568af /synapse/util/logcontext.py | |
parent | PEP8 (diff) | |
download | synapse-da1aa07db5f29436aeaae8d0dcbfe9872b4a7233.tar.xz |
Add some docs
Diffstat (limited to 'synapse/util/logcontext.py')
-rw-r--r-- | synapse/util/logcontext.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/synapse/util/logcontext.py b/synapse/util/logcontext.py index 192e3f49f0..3dce8d2bf3 100644 --- a/synapse/util/logcontext.py +++ b/synapse/util/logcontext.py @@ -134,13 +134,25 @@ class PreserveLoggingContext(object): def preserve_context_over_fn(fn, *args, **kwargs): + """Takes a function and invokes it with the given arguments, but removes + and restores the current logging context while doing so. + + If the result is a deferred, call preserve_context_over_deferred before + returning it. + """ with PreserveLoggingContext(): - deferred = fn(*args, **kwargs) + res = fn(*args, **kwargs) - return preserve_context_over_deferred(deferred) + if isinstance(res, defer.Deferred): + return preserve_context_over_deferred(res) + else: + return res def preserve_context_over_deferred(deferred): + """Given a deferred wrap it such that any callbacks added later to it will + be invoked with the current context. + """ d = defer.Deferred() current_context = LoggingContext.current_context() |