From 9deef77eef0ce5f83db7740a8409e7dbf1da5f59 Mon Sep 17 00:00:00 2001 From: Brad Davidson Date: Tue, 8 Apr 2025 20:32:34 +0000 Subject: [PATCH] Add ReusePort/ReuseAddr flags to etcd config Addresses flakes in etcd CI due to the port still being in TIME_WAIT after the server is shut down between tests Signed-off-by: Brad Davidson --- pkg/daemons/executor/executor.go | 2 ++ pkg/etcd/etcd.go | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/daemons/executor/executor.go b/pkg/daemons/executor/executor.go index 2c6df8dd53..1a6d24d006 100644 --- a/pkg/daemons/executor/executor.go +++ b/pkg/daemons/executor/executor.go @@ -55,6 +55,8 @@ type ETCDConfig struct { ServerTrust ServerTrust `json:"client-transport-security"` PeerTrust PeerTrust `json:"peer-transport-security"` ForceNewCluster bool `json:"force-new-cluster,omitempty"` + ReuseAddress bool `json:"reuse-address,omitempty"` + ReusePort bool `json:"reuse-port,omitempty"` HeartbeatInterval int `json:"heartbeat-interval"` ElectionTimeout int `json:"election-timeout"` Logger string `json:"logger"` diff --git a/pkg/etcd/etcd.go b/pkg/etcd/etcd.go index f249951b92..1bc3d13fb5 100644 --- a/pkg/etcd/etcd.go +++ b/pkg/etcd/etcd.go @@ -1035,6 +1035,8 @@ func (e *ETCD) cluster(ctx context.Context, reset bool, options executor.Initial HeartbeatInterval: 500, Logger: "zap", LogOutputs: []string{"stderr"}, + ReuseAddress: true, + ReusePort: true, ListenClientHTTPURLs: e.listenClientHTTPURLs(), ExperimentalInitialCorruptCheck: true, @@ -1098,11 +1100,13 @@ func (e *ETCD) StartEmbeddedTemporary(ctx context.Context) error { ListenClientHTTPURLs: clientHTTPURL, ListenPeerURLs: peerURL, Logger: "zap", + LogOutputs: []string{"stderr"}, + ReuseAddress: true, + ReusePort: true, HeartbeatInterval: 500, ElectionTimeout: 5000, SnapshotCount: 10000, Name: e.name, - LogOutputs: []string{"stderr"}, ExperimentalInitialCorruptCheck: true, ExperimentalWatchProgressNotifyInterval: e.config.Datastore.NotifyInterval,