diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2022-03-01 09:34:30 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-01 09:34:30 +0000 |
commit | 9d11fee8f223787c04c6574b8a30967e2b73cc35 (patch) | |
tree | d640acb12f617ea90df5cdf6f45cf2d867a8e520 /synapse/util/__init__.py | |
parent | Add type hints to `tests/rest/client` (#12094) (diff) | |
download | synapse-9d11fee8f223787c04c6574b8a30967e2b73cc35.tar.xz |
Improve exception handling for concurrent execution (#12109)
* fix incorrect unwrapFirstError import this was being imported from the wrong place * Refactor `concurrently_execute` to use `yieldable_gather_results` * Improve exception handling in `yieldable_gather_results` Try to avoid swallowing so many stack traces. * mark unwrapFirstError deprecated * changelog
Diffstat (limited to 'synapse/util/__init__.py')
-rw-r--r-- | synapse/util/__init__.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/synapse/util/__init__.py b/synapse/util/__init__.py index 511f52534b..58b4220ff3 100644 --- a/synapse/util/__init__.py +++ b/synapse/util/__init__.py @@ -81,7 +81,9 @@ json_decoder = json.JSONDecoder(parse_constant=_reject_invalid_json) def unwrapFirstError(failure: Failure) -> Failure: - # defer.gatherResults and DeferredLists wrap failures. + # Deprecated: you probably just want to catch defer.FirstError and reraise + # the subFailure's value, which will do a better job of preserving stacktraces. + # (actually, you probably want to use yieldable_gather_results anyway) failure.trap(defer.FirstError) return failure.value.subFailure # type: ignore[union-attr] # Issue in Twisted's annotations |