Fix stacktrace mangling in `patch_inline_callbacks` (#7554)

`Failure()` is more cunning than `Failure(e)`.
pull/7558/head
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)
# the wrapped function yielded a Deferred: yield it back up to the parent
# inlineCallbacks().
try:
result = yield d
except Exception as e:
result = Failure(e)
except Exception:
# 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: