Repository navigation
ci(gate): retry transient SSL EOF + clarify stale-closure errors (release/1.14.2) - #3198
Merged
stamp-build[bot] merged 1 commit intoOct 20, 2026
Merged
Conversation
Re-targets #3184 onto release/1.14.2, where the gate still ships (main deleted it with the Kuikly→Compose switch, #3192). - `ssl.SSLError` is not a subclass of `urllib.error.URLError`/`ConnectionError`, so it escaped the `get_bytes` retry ladder and surfaced a CDN concurrency flake (UNEXPECTED_EOF_WHILE_READING) as a hard CONFLICT — a transport blip reported as a release incident. It is now retried like the others. - Stale-closure failures said 'unexpected coordinates'/'closure missing' when the closure was merely pinned to an older release; the error now names the release the closure is on. Pure refactor of the request open into `_fetch_once` keeps UA, _NoRedirect and the 60s timeout identical. Self-test green on all arms, including ssl-retry-recovers and ssl-retry-exhausted.
Contributor
|
Reviewed at head
The cherry-pick partial-application note is right: applying the two commits produced a
|
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.
Re-targets #3184 onto
release/1.14.2.Why a new PR rather than reopening #3184: #3184 was opened against
main, andmainhas since landed #3192 ("big switch — whole app UI from Kuikly to Compose Multiplatform"), which deletedscripts/ci/kuikly_release_manifest_gate.pyalong withKUIKLY_RELEASE_SET. Nothing inmainreferences the gate any more. But per @artin,release/1.14.2is still shipping, and the gate is alive there — so the fix belongs on that branch.The two fixes
ssl.SSLErrorescaped the retry ladder. It is not a subclass ofurllib.error.URLError/ConnectionError, so the precedingexceptclauses never caught it and a CDN concurrency flake (UNEXPECTED_EOF_WHILE_READING) surfaced as a hardCONFLICT— a transport blip reported as a release incident. Now retried on the same 3-attempt ladder with 1s/2s backoff.Stale-closure errors misdescribed the cause. A closure pinned to an older release reported
unexpected coordinates/closure missing, which reads as broken content. The error now names the release the closure is on.Scope
scripts/ci/kuikly_release_manifest_gate.py, +62 / −14._fetch_onceis a behaviour-preserving extraction: sameUser-Agent, same_NoRedirecthandler, same 60s timeout.CONFLICTverdict or the exit code.--registry-basedefault is unchanged from the original PR.Verification
--self-test: all arms OK, including:ssl-retry-recovers— fails twice, succeeds on the third attemptssl-retry-exhausted— sustained failure raisesRuntimeError, never a bareSSLErrorexceptclauses or foldingSSLErrorinto the tuple stays green.Review history
Both fixes were reviewed by @辣条 on #3184 at heads
437e4fad6anda5172dbc3; hisssl.SSLErrorsubclassing check is what turned the observation into a mechanism. The content here is identical — only the base branch changed.Not covered
The PR does not re-run the live registry audit (
ALL_COMPLETE_EXACT); that result depends on the registry's state at the time, not on the script's semantics.