Repository navigation
Share one request pool per filesystem among its files and operations (GH-1332) #1359
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
a0d908e
Share one request pool per filesystem among its files and operations …
laughingman7743 acfe321
Hand scope places on in the pool thread, bound aio rm, release on clo…
laughingman7743 404490b
Run the annotation copies through a scope and document raising parall…
laughingman7743 fd7a6b2
Count a scope's call once the pool has accepted it (GH-1332)
laughingman7743 ddc302b
Settle a call interrupted after the pool accepted it through its work…
laughingman7743 4786e58
Keep scope order under concurrent submitters, free cancelled calls, i…
laughingman7743 7d53dc9
Wait for a streamed file's requests and commit when it closes (GH-1332)
laughingman7743 8bfe3b4
Free a parallel read's data on an interrupt at any point (GH-1332)
laughingman7743 c8b7300
Default the cursors' s3_max_workers to the client's connection pool (…
laughingman7743 abde069
Add barrier cases with a real SIGINT for waits that block (GH-1332)
laughingman7743 7b77f37
Give the local test filesystem the close() of PyAthena's filesystems …
laughingman7743 cebbe07
Run a pool thread's scope call in that thread, and default files to t…
laughingman7743 80ad4f2
Share the polling and SIGINT test helpers (GH-1332)
laughingman7743 dee243f
Track every call of a file and scope through cancellation (GH-1332)
laughingman7743 db9c9e0
Cancel an abort that is never queued, and clear read frames first (GH…
laughingman7743 770541b
Make the interrupt and shutdown tests independent of timing (GH-1332)
laughingman7743 9898f17
Wait only for a commit or abort that was queued or started (GH-1332)
laughingman7743 b9763f8
Let a scope wait only for calls that can still run (GH-1332)
laughingman7743 6a6e737
Keep a waiting call that a pool thread runs after shutdown (GH-1332)
laughingman7743 48fef9a
Wait for a scope's calls through done callbacks (GH-1332)
laughingman7743 524b22b
Recheck future states while waiting for a scope or a drain (GH-1332)
laughingman7743 f18ee10
Document that an interrupt of a close stops its wait (GH-1332)
laughingman7743 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Self-review round 2 after the specification (
ddc302bd..80ad4f2b): CLEAN after the corrections below.Claims checked:
docs/usage.md: Polars usess3_max_workersfor CSV results read withoutchunksizeand for UNLOAD results read in chunks through PyArrow without read options (polars/result_set.py:1237-1240,:874). The old text said UNLOAD results do not use it, which was wrong before this change.S3FileSystem(max_workers=None), which takes the connection client'smax_pool_connections.test_filesystem_request_pool_sizechecks the default path, andtest_s3_max_workers_defaultchecks the six cursors.close()now raisesCancelledErroronly after the commit or the read requests end (test_commit_cancelled,test_close_waits_for_cancelled_read). This is a behaviour change for callers, listed in the PR body.concurrent.futures.wait()leaves its waiter on the futures, so the data is freed by the cyclic GC (verified with CPython alone). This is stated in the test and will be added to the spec.returnof_S3PoolScope.submit()is not a point where CPython checks signals, so the gap listed in the spec cannot occur. The spec will be updated.Evidence: offline suites stable (961 passed and the two AWS-only failures); the affected AWS suites passed at 7b77f37 (2435 passed, 14 skipped); every new test fails under its mutation.