shuke987 opened a new pull request, #69510: URL: https://github.com/apache/doris/pull/69510
### What problem does this PR solve? Issue Number: N/A Related PR: #69469 Problem Summary: A single transient GitHub response currently aborts the review pipeline. [Input resolution for #69322](https://github.com/apache/doris/actions/runs/39794013905/job/119876748768) stopped on a GET 503 despite `Retry-After: 2`; [aggregate resolution for #69438](https://github.com/apache/doris/actions/runs/39760934956/job/119764632659) stopped on a paginated GET 504 after emitting partial output. The shared helper now retries recognized body-free REST GETs on 502/503/504, for at most three attempts. Each attempt has a 30-second limit; attempts and waits share a 90-second budget or the caller's shorter timeout. It respects Retry-After, records every failed attempt, discards failed pagination output, and returns only a successful attempt's complete output. Exhaustion still fails. Writes, GraphQL, unknown argument forms, other HTTP errors, transport/timeouts and JSON parsing errors are not retried. Input resolution can also fail before publishing its PR-number output. Failure notices now fall back to the authorized trigger's numeric PR identity, explicitly select the repository, and name the input-resolution failure in both the notice and terminal error. This fallback does not permit status publication for an unresolved head/base. This change can merge independently. It includes the same explicit `--repo` argument as #69469; a local combination with #69469 and #69504 merged cleanly and passed the macOS suite. ### Release note None ### Check List (For Author) - Test: - [x] Unit Test: `PYTHONDONTWRITEBYTECODE=1 RUN_GH_HTTP_TESTS=1 python3 -m unittest discover -s .github/scripts -p 'test_*.py'` — 281 tests, 262 passed / 19 Linux-only skips on macOS. - [x] Manual test: real gh 2.88.1 against a loopback server with fake credentials verifies 503 recovery, whole-pagination restart after 504, three-attempt exhaustion with empty stdout, and no POST retries. Unit cases cover short budgets, Retry-After seconds/dates, malformed or over-budget waits, non-transient errors, cancellation and input-failure notification. - [x] Integration: local merge with #69469 and #69504 — 294 tests, 275 passed / 19 Linux-only skips; no conflicts. - [x] Linux supervision/auth subset in a network-disabled container: 101 of 103 passed. The two failures also reproduce on unchanged base `0d777cd0791553da6f271cb7a62811aa165832fc`: `test_capacity_after_submission_is_success_without_auth_quarantine` and `test_success_is_not_quarantined_even_with_earlier_stderr_error`. Both old fixtures omit fields required by `validate_submission`; neither reaches a new retry failure. - [x] actionlint 1.7.7 and `git diff --check`; actionlint disables unavailable ShellCheck/Pyflakes integrations and filters its existing unsupported `concurrency.queue` diagnostic. - Live Actions recovery has not been exercised; no rerun, review comment or status write was manually triggered. - Behavior changed: - [x] Yes. Transient read failures receive bounded retries; input-resolution failure notices can reach the original PR. - Does this need documentation? - [x] Yes. Updated `.github/scripts/review-github-diagnostics.md` in this PR. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
