Conversation
Merging this PR will not alter performance
Comparing Footnotes
|
There was a problem hiding this comment.
All reported issues were addressed across 2 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
Yeaseen
force-pushed
the
fix-close-incomplete-upload
branch
from
September 7, 2026 07:37
8cfa08f to
b1c2e6c
Compare
Yeaseen
force-pushed
the
fix-close-incomplete-upload
branch
from
September 7, 2026 07:41
b1c2e6c to
ea974bf
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.
Problem
When a multipart request ends before the current file part is completed,
FormParser.close()closes only the low-level parser. The activeFileordecoder-backed writer remains open even though it was never delivered to the
application through
on_file.Completed files are different: once passed to
on_file, their lifetime belongsto the application and closing the parser must not close them.
Solution
Track whether the active multipart file has been transferred to
on_file. OnFormParser.close(), close an active writer only when it is still owned by theparser. Clear the writer after closing it so repeated calls to
close()aresafe.
This closes both direct file writers and decoder-backed writers. It preserves
the configured
UPLOAD_DELETE_TMP=Falsebehavior: closing an unfinished filereleases its file descriptor but does not unlink the retained temporary file.
Tests
exactly once.
FormParser.close()calls are safe.on_fileremain open and caller-owned.UPLOAD_DELETE_TMP=Falsecontinues to retain the file after closing.Verification performed: