From 2a7bffc63e6c50c663a13cc73efa0078081bff6e Mon Sep 17 00:00:00 2001 From: James Blair Date: Fri, 18 Aug 2023 12:05:19 +1200 Subject: [PATCH] Backport export reuse-port and reuse-address so that they cabn be configured via config file. Co-authored-by: Shawn Gerrard Signed-off-by: James Blair --- client/pkg/transport/sockopt.go | 4 ++-- server/embed/config.go | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/client/pkg/transport/sockopt.go b/client/pkg/transport/sockopt.go index 38548ddd7..fe028c613 100644 --- a/client/pkg/transport/sockopt.go +++ b/client/pkg/transport/sockopt.go @@ -21,12 +21,12 @@ type SocketOpts struct { // in which case lock on data file could result in unexpected // condition. User should take caution to protect against lock race. // [1] https://man7.org/linux/man-pages/man7/socket.7.html - ReusePort bool + ReusePort bool `json:"reuse-port"` // ReuseAddress enables a socket option SO_REUSEADDR which allows // binding to an address in `TIME_WAIT` state. Useful to improve MTTR // in cases where etcd slow to restart due to excessive `TIME_WAIT`. // [1] https://man7.org/linux/man-pages/man7/socket.7.html - ReuseAddress bool + ReuseAddress bool `json:"reuse-address"` } func getControls(sopts *SocketOpts) Controls { diff --git a/server/embed/config.go b/server/embed/config.go index ec4da2fbd..8394b2ae1 100644 --- a/server/embed/config.go +++ b/server/embed/config.go @@ -264,7 +264,7 @@ type Config struct { GRPCKeepAliveTimeout time.Duration `json:"grpc-keepalive-timeout"` // SocketOpts are socket options passed to listener config. - SocketOpts transport.SocketOpts + SocketOpts transport.SocketOpts `json:"socket-options"` // PreVote is true to enable Raft Pre-Vote. // If enabled, Raft runs an additional election phase @@ -470,7 +470,10 @@ func NewConfig() *Config { GRPCKeepAliveInterval: DefaultGRPCKeepAliveInterval, GRPCKeepAliveTimeout: DefaultGRPCKeepAliveTimeout, - SocketOpts: transport.SocketOpts{}, + SocketOpts: transport.SocketOpts{ + ReusePort: false, + ReuseAddress: false, + }, TickMs: 100, ElectionMs: 1000,