From f953f4065d682c670adcbf51c662367d99cf4d25 Mon Sep 17 00:00:00 2001 From: bRong Njam Date: Wed, 14 Oct 2026 02:17:20 +0800 Subject: [PATCH 1/3] ci(coverage): allow checkout retries before the step deadline --- .github/workflows/coverage-ut.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/coverage-ut.yaml b/.github/workflows/coverage-ut.yaml index 3ae558d..f0bfd50 100644 --- a/.github/workflows/coverage-ut.yaml +++ b/.github/workflows/coverage-ut.yaml @@ -146,20 +146,27 @@ jobs: # external Aliyun/QCloud coverage UT. This is intentionally larger than # the UT-only minimum while we validate the external-storage timeout fix. runs-on: amd64-mo-guangzhou-2xlarge16 - # Budget the whole producer: 20m cache seeding, a 190m coverage step + # Budget the whole producer: 20m source checkout, 20m cache seeding, + # a 190m coverage step # (15m package discovery, 30m native preparation, a 60m controlled test # deadline or 70m fallback, and bounded cleanup), plus enough time for # summaries and artifacts. # The wrapper below enforces the test deadline before this job-level last # resort. # The bounded setup/cache/coverage/report paths fit below this limit with - # roughly 20m of job-level cushion; the job timeout is never the diagnostic + # roughly 5m of job-level cushion; the job timeout is never the diagnostic # mechanism for a stuck test. timeout-minutes: 310 steps: - name: Checkout MatrixOne source - timeout-minutes: 5 + # A stalled HTTPS connection can consume libcurl's 300s connect limit. + # Allow checkout's existing retries to run before the step deadline; + # abort stalled HTTP transfers after connection without slowing retries. + timeout-minutes: 20 uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + env: + GIT_HTTP_LOW_SPEED_LIMIT: "1" + GIT_HTTP_LOW_SPEED_TIME: "60" with: token: ${{ secrets.TOKEN_ACTION }} fetch-depth: "3" From 0928c128ba036858d03aff276d3a71b24b9c67b4 Mon Sep 17 00:00:00 2001 From: bRong Njam Date: Wed, 14 Oct 2026 10:19:52 +0800 Subject: [PATCH 2/3] ci(coverage): close checkout retry and reporting budgets --- .github/workflows/coverage-ut.yaml | 43 +++++++++++++----------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/.github/workflows/coverage-ut.yaml b/.github/workflows/coverage-ut.yaml index f0bfd50..7bc92a2 100644 --- a/.github/workflows/coverage-ut.yaml +++ b/.github/workflows/coverage-ut.yaml @@ -146,22 +146,21 @@ jobs: # external Aliyun/QCloud coverage UT. This is intentionally larger than # the UT-only minimum while we validate the external-storage timeout fix. runs-on: amd64-mo-guangzhou-2xlarge16 - # Budget the whole producer: 20m source checkout, 20m cache seeding, - # a 190m coverage step - # (15m package discovery, 30m native preparation, a 60m controlled test - # deadline or 70m fallback, and bounded cleanup), plus enough time for - # summaries and artifacts. + # The cache-enabled failure path has 325m of step limits: 40m for the + # two checkouts, 20m cache seeding, 190m coverage, 15m Go/Python setup, + # 5m cache status, and 55m for failure reports, artifacts, final status, + # and failure propagation. Reserve 5m for job overhead and post-action + # cleanup. Success paths skip the failure-only steps. # The wrapper below enforces the test deadline before this job-level last - # resort. - # The bounded setup/cache/coverage/report paths fit below this limit with - # roughly 5m of job-level cushion; the job timeout is never the diagnostic - # mechanism for a stuck test. - timeout-minutes: 310 + # resort; the job timeout is never the diagnostic mechanism for a stuck + # test. + timeout-minutes: 330 steps: - name: Checkout MatrixOne source - # A stalled HTTPS connection can consume libcurl's 300s connect limit. - # Allow checkout's existing retries to run before the step deadline; - # abort stalled HTTP transfers after connection without slowing retries. + # Low-speed limits apply after connection; proxy CONNECT/TLS stalls + # can still consume libcurl's 300s connection timeout. The 20m step + # limit gives checkout's existing retries room and bounds the whole + # checkout, including multiple connections and local Git work. timeout-minutes: 20 uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 env: @@ -183,8 +182,12 @@ jobs: timeout-minutes: 5 uses: matrixorigin/CI/actions/setup-python-udf@main - name: Checkout CI coverage helper - timeout-minutes: 5 + # Use the same bounded retry budget on this runner's network path. + timeout-minutes: 20 uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + env: + GIT_HTTP_LOW_SPEED_LIMIT: "1" + GIT_HTTP_LOW_SPEED_TIME: "60" with: token: ${{ secrets.TOKEN_ACTION }} repository: ${{ job.workflow_repository }} @@ -194,6 +197,7 @@ jobs: scripts/run_coverage_ut.py scripts/compact_coverage_profile.go scripts/summarize_coverage_ut.py + scripts/summarize_ut_report.py sparse-checkout-cone-mode: false path: .ci-workflow # Import completed seed entries, not a directory-emptiness heuristic. @@ -550,15 +554,6 @@ jobs: echo '::endgroup::' # Match the legacy coverage job's actionable failure report while keeping # the large JSON stream out of successful coverage artifacts. - - name: Checkout CI repository for UT failure summary - if: ${{ always() && !cancelled() && steps.coverage_ut.outcome == 'failure' }} - timeout-minutes: 5 - uses: actions/checkout@v6 - with: - token: ${{ secrets.TOKEN_ACTION }} - repository: matrixorigin/CI - fetch-depth: "1" - path: CI - name: Analyze and summarize failed coverage UT if: ${{ always() && !cancelled() && steps.coverage_ut.outcome == 'failure' }} timeout-minutes: 10 @@ -583,7 +578,7 @@ jobs: echo 'go-ut-analysis is unavailable; the raw JSON report is attached.' | tee -a "${summary}" fi fi - python "$GITHUB_WORKSPACE/CI/scripts/summarize_ut_report.py" "${report}" | tee -a "${summary}" || true + python "$GITHUB_WORKSPACE/.ci-workflow/scripts/summarize_ut_report.py" "${report}" | tee -a "${summary}" || true fi if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then { From 42345f2906c27117fd5f6cc83893006ce0cd3b17 Mon Sep 17 00:00:00 2001 From: XuPeng-SH Date: Mon, 26 Oct 2026 10:17:31 +0800 Subject: [PATCH 3/3] ci(coverage): cap checkout recovery at ten minutes --- .github/workflows/coverage-ut.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/coverage-ut.yaml b/.github/workflows/coverage-ut.yaml index 7bc92a2..aaf1374 100644 --- a/.github/workflows/coverage-ut.yaml +++ b/.github/workflows/coverage-ut.yaml @@ -146,7 +146,7 @@ jobs: # external Aliyun/QCloud coverage UT. This is intentionally larger than # the UT-only minimum while we validate the external-storage timeout fix. runs-on: amd64-mo-guangzhou-2xlarge16 - # The cache-enabled failure path has 325m of step limits: 40m for the + # The cache-enabled failure path has 305m of step limits: 20m for the # two checkouts, 20m cache seeding, 190m coverage, 15m Go/Python setup, # 5m cache status, and 55m for failure reports, artifacts, final status, # and failure propagation. Reserve 5m for job overhead and post-action @@ -154,14 +154,14 @@ jobs: # The wrapper below enforces the test deadline before this job-level last # resort; the job timeout is never the diagnostic mechanism for a stuck # test. - timeout-minutes: 330 + timeout-minutes: 310 steps: - name: Checkout MatrixOne source # Low-speed limits apply after connection; proxy CONNECT/TLS stalls - # can still consume libcurl's 300s connection timeout. The 20m step - # limit gives checkout's existing retries room and bounds the whole + # can still consume libcurl's 300s connection timeout. The 10m step + # limit permits retries after transient stalls and bounds the whole # checkout, including multiple connections and local Git work. - timeout-minutes: 20 + timeout-minutes: 10 uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 env: GIT_HTTP_LOW_SPEED_LIMIT: "1" @@ -183,7 +183,7 @@ jobs: uses: matrixorigin/CI/actions/setup-python-udf@main - name: Checkout CI coverage helper # Use the same bounded retry budget on this runner's network path. - timeout-minutes: 20 + timeout-minutes: 10 uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 env: GIT_HTTP_LOW_SPEED_LIMIT: "1"