Repository navigation
Avoid TLS set_multi stall in recovery parity fixtures; cap CI job time - #86
Merged
nherson merged 1 commit intoOct 13, 2026
Merged
Conversation
A 40 x 3KB set_multi over TLS can stall memcached waiting for MN, and on Ruby < 3.4 the openssl gem ignores IO#timeout, so the SSL parity test hung until GitHub's 6h job limit. Load fixtures with individual sets and add a 15 minute job timeout so future hangs fail fast.
nherson
added a commit
that referenced
this pull request
Oct 13, 2026
…chedulers (#85) * Add experimental per-request timeout recovery for reads under fiber schedulers * Avoid TLS set_multi stall in recovery parity fixtures; cap CI job time (#86) A 40 x 3KB set_multi over TLS can stall memcached waiting for MN, and on Ruby < 3.4 the openssl gem ignores IO#timeout, so the SSL parity test hung until GitHub's 6h job limit. Load fixtures with individual sets and add a 15 minute job timeout so future hangs fail fast. * Remove timeout-recovery reader test for unreachable post-timeout state The reader is always discarded after an IO::TimeoutError (error_on_request! -> close), and the assertion only held because read_nonblock leaves the buffer intact on :wait_readable for plain IO.
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.
Stacked on #85.
CI run 37812536660 had Ruby 3.2/3.3 jobs cancelled at the 6h limit. The new SSL parity test hangs in
store_fixtures: a 40 x 3KBset_multiover TLS (default read path) never getsMNfrom memcached. On Ruby < 3.4 the bundled openssl gem ignoresIO#timeoutfor blocking SSL reads, sosocket_timeoutnever fires; on 3.4+ it times out after 1s and retries (SSL test took ~1.23s). Reproduced on main's lib without this PR's reader.setcalls.timeout-minutes: 15to the test job (passing jobs take ~3 min).Verified locally on Ruby 3.3.6: the whole file passes with seeds 1-3, SSL test 0.14-0.16s.