From 24cb2913044ab8edaebbd7b070e797f73a41bce8 Mon Sep 17 00:00:00 2001 From: Vitah Lin Date: Fri, 16 Oct 2026 14:52:35 +0800 Subject: [PATCH] CI upgrade FreeBSD to 15.1 (#15989) ## Issue The FreeBSD CI job still runs on FreeBSD 13.2. This version is no longer available for the current CI setup, so the job needs to move to a supported FreeBSD release. On FreeBSD 15.1, the `unit/networking` prefetch test creates 300 Tcl clients. Each client requests an ephemeral local port. The FreeBSD 15 port allocation and lookup changes can sometimes return `EADDRINUSE` during client creation before the Redis assertion runs. ## Change - Use `cross-platform-actions/action@v1.6.0` with FreeBSD 15.1. - Disable randomized ephemeral-port selection in the CI VM with `net.inet.ip.portrange.randomized=0` to avoid the observed port collision. --- .github/workflows/daily.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index 8714376532..21965ec276 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -1093,15 +1093,28 @@ jobs: repository: ${{ env.GITHUB_REPOSITORY }} ref: ${{ env.GITHUB_HEAD_REF }} - name: test - uses: cross-platform-actions/action@v1.0.0 + uses: cross-platform-actions/action@v1.6.0 with: operating_system: freebsd environment_variables: MAKE - version: 13.2 + version: 15.1 shell: bash run: | sudo pkg install -y bash gmake lang/tcl86 lang/tclX gcc gmake + # The unit/networking test "Prefetch works with maximum batch size + # of 128 and client number larger than batch size" creates 300 Tcl + # clients in one run. Each client asks the kernel to choose an + # ephemeral local port (port 0). FreeBSD 15 + # changed the local-port allocation/lookup implementation; under + # this workload its randomized selection can transiently choose a + # port/connection tuple that is still present in the socket table, + # and the client creation fails with EADDRINUSE before the Redis + # assertion runs. Disable randomized selection for this disposable + # CI VM as a workaround. This does not change Redis's listening + # port or the ephemeral-port range, and the setting is lost at + # reboot. + sudo sysctl net.inet.ip.portrange.randomized=0 ./runtest --single unit/keyspace --single unit/auth --single unit/networking --single unit/protocol test-alpine-jemalloc: