Stop writing a 500 on top of a response that already started - #3715
Merged
Conversation
Worker timeout raises SystemExit, which skipped the headers_sent guard.
Owner
|
Thanks for tracking this down, the fix is right: once headers are out we should close, not write a 500. One thing on the catch itself: except (Exception, SystemExit):in all three workers possibly. |
benoitc
self-requested a review
August 31, 2026 00:12
benoitc
requested changes
Aug 31, 2026
benoitc
left a comment
Owner
There was a problem hiding this comment.
lPlease look at my comment about the exception. Once handled , the code is OK to merge.
Contributor
Author
|
Narrowed the headers-sent catch in sync, gthread, and the async worker to |
Owner
|
Thanks @gyanu2507, merged. |
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.
Worker timeout fires SIGABRT →
sys.exit(1). That's a BaseException, so theexcept Exceptionguard that checksheaders_sentnever ran.handle_errorthen wrote a 500 onto the same socket, which is how wget ended up with ISE HTML concatenated onto a partial download.Once headers are out we just close, same as a regular exception.
Fixes #3410