fix(runtime-sdk): improve ASGI lifespan failure reporting - #172
Draft
whitphx wants to merge 1 commit into
Draft
Conversation
whitphx
marked this pull request as draft
July 30, 2026 19:33
whitphx
force-pushed
the
fix/asgi-lifespan-failure-reporting
branch
2 times, most recently
from
August 10, 2026 05:25
38cde7d to
ee1be54
Compare
A reported startup or shutdown failure surfaced as a bare RuntimeError,
losing the app's own exception; an exception raised before the startup
ack vanished entirely; and an empty message produced RuntimeError('').
whitphx
force-pushed
the
fix/asgi-lifespan-failure-reporting
branch
from
August 11, 2026 12:13
ee1be54 to
0a9df8c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three gaps in
start_application's failure paths:lifespan.startup.failedsurfaced asRuntimeError(message)with no__cause__. The app's own exception, which frameworks like Starlette re-raise inside the lifespan task right after sendingfailed, only reached a background log line as text. It is now chained as the reported error's cause, on both the startup and shutdown failure paths.messageproducedRuntimeError('')on both failure paths; a.getdefault only applies when the key is absent.pytest -k asgiinpackages/runtime-sdkruns the workerd suite, which covers one test per case above.