diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0e5ecf04..838c4c10 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -143,8 +143,8 @@ jobs: runs-on: ubuntu-latest # Must fit `max_attempts * timeout_minutes` below, plus ~1 min of setup, # or the last attempt gets killed mid-run and the cell reports `cancelled` - # -- a dead gate. JRuby: 1 + 20 + 20 = 41. MRI: 1 + 3 + 3 = 7, under 8. - timeout-minutes: ${{ contains(matrix.ruby-version, 'jruby') && 41 || 8 }} + # -- a dead gate. JRuby: 1 + 20 + 20 = 41. MRI: 1 + 4 + 4 = 9. + timeout-minutes: ${{ contains(matrix.ruby-version, 'jruby') && 41 || 9 }} continue-on-error: ${{ matrix.experimental }} strategy: matrix: @@ -212,11 +212,20 @@ jobs: # so it was slow, not hung. # # 20 min restores ~26% over the slowest attempt, which is the margin - # this was originally sized for. MRI is 128s against 3 min and does - # not move. If JRuby ever exceeds this again, re-measure and raise - # BOTH numbers -- a per-attempt timeout that does not fit the job cap - # reports `cancelled`, which reads as an absence rather than a fail. - timeout_minutes: ${{ contains(matrix.ruby-version, 'jruby') && 20 || 3 }} + # this was originally sized for. + # + # MRI then did the same thing one release later, which is why it is 4 + # and not 3. "MRI is 128s against 3 min" was true when written; measured + # on run 32770212615 the attempts are 78-146s, so the slowest had 23% + # left and `3.3/rails81` (144s) duly timed out on run 32889000873 -- + # again with tests still printing dots when SIGTERM landed. 4 min puts + # the slowest back to ~64%. + # + # The lesson both times: these numbers are measurements, not settings. + # When one bites, RE-MEASURE and raise BOTH it and the job cap -- a + # per-attempt timeout that does not fit the cap reports `cancelled`, + # which reads as an absence rather than a failure. + timeout_minutes: ${{ contains(matrix.ruby-version, 'jruby') && 20 || 4 }} # Two, not three. A third attempt never fit inside the job cap on # either engine (JRuby 3x15=45 > 25; MRI 3x3=9 > 8), so it only ever # got killed partway and reported the cell as `cancelled`. Keeping