From e6c8ee2f1ce468a448e6141783784b5e6639d54c Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 24 Dec 2025 20:42:53 -0800 Subject: [PATCH] testutil: choose lower ephemeral ports (<55535) to avoid overflow in master/raft port math --- test/s3/testutil/server.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/test/s3/testutil/server.go b/test/s3/testutil/server.go index 7e196d4a1..17bb8dd88 100644 --- a/test/s3/testutil/server.go +++ b/test/s3/testutil/server.go @@ -75,14 +75,21 @@ func StartServer(config ServerConfig) (*TestServer, error) { } // choose free ports for master, volume, filer and metrics to avoid collisions + // pick a free port but avoid very large ephemeral ports that can overflow + // internal port math (keep below 55535) pick := func() int { - l, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - return 0 + for i := 0; i < 10; i++ { + l, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + continue + } + p := l.Addr().(*net.TCPAddr).Port + l.Close() + if p > 1024 && p < 55535 { + return p + } } - p := l.Addr().(*net.TCPAddr).Port - l.Close() - return p + return 0 } masterPort := pick()