diff options
author | Mark Haines <mark.haines@matrix.org> | 2015-05-12 15:31:26 +0100 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2015-05-12 15:31:26 +0100 |
commit | 4429e4bf2499b0b3fecc8637c2a7a932aab908e4 (patch) | |
tree | 0c17e1767434df9684c3d34263a161ba4fa1d9b9 /synapse/util/__init__.py | |
parent | Update the end_token correctly, otherwise the token doesn't advance and the c... (diff) | |
parent | Merge pull request #143 from matrix-org/erikj/SYN-375 (diff) | |
download | synapse-4429e4bf2499b0b3fecc8637c2a7a932aab908e4.tar.xz |
Merge branch 'develop' into notifier_unify
Conflicts: synapse/notifier.py
Diffstat (limited to 'synapse/util/__init__.py')
-rw-r--r-- | synapse/util/__init__.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/synapse/util/__init__.py b/synapse/util/__init__.py index 79109d0b19..c1a16b639a 100644 --- a/synapse/util/__init__.py +++ b/synapse/util/__init__.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from synapse.util.logcontext import LoggingContext +from synapse.util.logcontext import LoggingContext, PreserveLoggingContext from twisted.internet import defer, reactor, task @@ -23,6 +23,12 @@ import logging logger = logging.getLogger(__name__) +def unwrapFirstError(failure): + # defer.gatherResults and DeferredLists wrap failures. + failure.trap(defer.FirstError) + return failure.value.subFailure + + class Clock(object): """A small utility that obtains current time-of-day so that time may be mocked during unit-tests. @@ -50,9 +56,12 @@ class Clock(object): current_context = LoggingContext.current_context() def wrapped_callback(): - LoggingContext.thread_local.current_context = current_context - callback() - return reactor.callLater(delay, wrapped_callback) + with PreserveLoggingContext(): + LoggingContext.thread_local.current_context = current_context + callback() + + with PreserveLoggingContext(): + return reactor.callLater(delay, wrapped_callback) def cancel_call_later(self, timer): timer.cancel() |