Retry interrupted waits in io_wait and process_wait - #469
Merged
Conversation
3 tasks
ioquatix
reviewed
Aug 23, 2026
tavianator
force-pushed
the
fix-stale-unblock-retry
branch
from
August 24, 2026 15:39
9a52812 to
7e3423a
Compare
Contributor
|
The final split is now explicit: Async retries only selector-level stale wake-ups ( |
samuel-williams-shopify
force-pushed
the
fix-stale-unblock-retry
branch
from
August 26, 2026 02:23
624e7c1 to
2416520
Compare
samuel-williams-shopify
force-pushed
the
fix-stale-unblock-retry
branch
from
August 26, 2026 02:39
2416520 to
b790e48
Compare
Signed-off-by: Samuel Williams <samuel.williams@shopify.com>
Signed-off-by: Samuel Williams <samuel.williams@shopify.com>
Signed-off-by: Samuel Williams <samuel.williams@shopify.com>
Signed-off-by: Samuel Williams <samuel.williams@shopify.com>
samuel-williams-shopify
force-pushed
the
fix-stale-unblock-retry
branch
from
August 26, 2026 04:51
b790e48 to
57ffab4
Compare
ioquatix
approved these changes
Aug 26, 2026
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.
Fixes: #467
Summary
io_waitafter a stale selector wake-up while preserving the original timeout.process_waitwhen the selector returnsfalse, indicating that the native wait was interrupted before process completion.nilfromprocess_wait, including legitimateProcess::WNOHANGresults.~> 1.21, which provides consistent interrupted-process-wait behavior across native backends.Scope
io-event owns the native interruption and cancellation contract; Async owns the higher-level retry policy. socketry/io-event#215 fixed modern io_uring cancellation and was released in io-event v1.21.0.
The separate threaded process-wait behavior is not worked around here. socketry/io-event#212 adds test-only coverage on Ruby 4.0 and newer. Ruby 3.3 and 3.4 remain skipped there pending the CRuby backports:
Testing
BUNDLE_MIRROR__RUBYGEMS__ORG=https://rubygems.org BUNDLE_GEMFILE=gems.rb bundle exec bake testFiber.set_schedulerfailure reproduce identically on the previous commit (57ffab4) and are unrelated to this update.Types of Changes
Contribution