Fix stacktrace mangling in `patch_inline_callbacks` (#7554)

`Failure()` is more cunning than `Failure(e)`.
This commit is contained in:
Richard van der Hoff 2020-05-22 10:17:36 +01:00 committed by GitHub
parent d84bdfe599
commit a0f99f81b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 2 deletions

1
changelog.d/7554.misc Normal file
View File

@ -0,0 +1 @@
Fix some test code to not mangle stacktraces, to make it easier to debug errors.

View File

@ -186,10 +186,15 @@ def _check_yield_points(f: Callable, changes: List[str]):
) )
raise Exception(err) raise Exception(err)
# the wrapped function yielded a Deferred: yield it back up to the parent
# inlineCallbacks().
try: try:
result = yield d result = yield d
except Exception as e: except Exception:
result = Failure(e) # this will fish an earlier Failure out of the stack where possible, and
# thus is preferable to passing in an exeception to the Failure
# constructor, since it results in less stack-mangling.
result = Failure()
if current_context() != expected_context: if current_context() != expected_context: