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.
This commit is contained in:
Vitah Lin authored and GitHub committed 2026-10-16 14:52:35 +08:00
1 parent 4e4c65bc71
commit 24cb291304
1 file changed
+15 -2
+15 -2
View File
@@ -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: