Commit e95148d
authored
Mitigate intermittent SSL runner timeouts on FreeBSD CI (#3171)
### Description of changes:
The FreeBSD 15.0 (x86-64) CI job fails intermittently on CBC record
splitting tests (`CBCRecordSplitting-AES128`,
`CBCRecordSplittingPartialWrite-AES128`) with runner-side TCP timeouts
like `read tcp [::1]:...->[::1]:...: i/o timeout`. The QEMU-emulated
FreeBSD VM is occasionally too slow to respond within the runner's
default 30-second idle timeout.
The runner already has retry logic for shim-side idle timeouts and
transient signals, but runner-side TCP timeouts (`net.Error` with
`Timeout() == true`) fall through without a retry — the test just fails.
This PR does two things:
1. Increases the idle timeout to 120s and enables retry-on-timeout for
the FreeBSD CI job.
2. Adds a new `-retry-on-timeout` flag to the SSL test runner that
retries tests on runner-side TCP timeouts. A real bug will fail again on
the retry.
### Call-outs:
The `-retry-on-timeout` flag is off by default. It's gated behind
`AWS_LC_SSL_RUNNER_RETRY_ON_TIMEOUT` at the CMake level, currently only
enabled for FreeBSD. If similar flakiness shows up on NetBSD or OpenBSD,
we can add the same env vars to those jobs.
This PR also fixes a pre-existing variable shadowing bug in the retry
block: `shim, err := newShimProcess(...)` was creating a new `shim`
scoped to the `if` block, so after a successful retry the code would
still read `stdout`/`stderr` from the original failed shim. This caused
retried tests to fail with `unexpected error output` even when the retry
passed. Changed to `shim, err = ...` to reassign the outer variable.
### Testing:
This addresses a CI flakiness issue — the fix will be validated by
observing the FreeBSD job over subsequent runs. The retry logic is
structurally identical to the existing `shim.idled` retry path.
By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license and the ISC license.1 parent b624702 commit e95148d
3 files changed
Lines changed: 25 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
711 | 711 | | |
712 | 712 | | |
713 | 713 | | |
| 714 | + | |
| 715 | + | |
714 | 716 | | |
715 | 717 | | |
716 | | - | |
| 718 | + | |
717 | 719 | | |
718 | 720 | | |
719 | 721 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1350 | 1350 | | |
1351 | 1351 | | |
1352 | 1352 | | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
1353 | 1360 | | |
1354 | 1361 | | |
1355 | 1362 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
| 72 | + | |
72 | 73 | | |
73 | 74 | | |
74 | 75 | | |
| |||
1671 | 1672 | | |
1672 | 1673 | | |
1673 | 1674 | | |
1674 | | - | |
1675 | | - | |
1676 | | - | |
1677 | | - | |
1678 | | - | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1679 | 1687 | | |
1680 | 1688 | | |
1681 | 1689 | | |
1682 | 1690 | | |
1683 | 1691 | | |
1684 | | - | |
| 1692 | + | |
| 1693 | + | |
1685 | 1694 | | |
1686 | 1695 | | |
1687 | 1696 | | |
| |||
0 commit comments