Backport export reuse-port and reuse-address

so that they cabn be configured via config file.

Co-authored-by: Shawn Gerrard <shawn.gerrard@gmail.com>
Signed-off-by: James Blair <mail@jamesblair.net>
This commit is contained in:
James Blair 2023-08-18 12:05:19 +12:00
parent 2d2e75dd8e
commit 2a7bffc63e
No known key found for this signature in database
2 changed files with 7 additions and 4 deletions

View File

@ -21,12 +21,12 @@ type SocketOpts struct {
// in which case lock on data file could result in unexpected // in which case lock on data file could result in unexpected
// condition. User should take caution to protect against lock race. // condition. User should take caution to protect against lock race.
// [1] https://man7.org/linux/man-pages/man7/socket.7.html // [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 // ReuseAddress enables a socket option SO_REUSEADDR which allows
// binding to an address in `TIME_WAIT` state. Useful to improve MTTR // binding to an address in `TIME_WAIT` state. Useful to improve MTTR
// in cases where etcd slow to restart due to excessive `TIME_WAIT`. // in cases where etcd slow to restart due to excessive `TIME_WAIT`.
// [1] https://man7.org/linux/man-pages/man7/socket.7.html // [1] https://man7.org/linux/man-pages/man7/socket.7.html
ReuseAddress bool ReuseAddress bool `json:"reuse-address"`
} }
func getControls(sopts *SocketOpts) Controls { func getControls(sopts *SocketOpts) Controls {

View File

@ -264,7 +264,7 @@ type Config struct {
GRPCKeepAliveTimeout time.Duration `json:"grpc-keepalive-timeout"` GRPCKeepAliveTimeout time.Duration `json:"grpc-keepalive-timeout"`
// SocketOpts are socket options passed to listener config. // 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. // PreVote is true to enable Raft Pre-Vote.
// If enabled, Raft runs an additional election phase // If enabled, Raft runs an additional election phase
@ -470,7 +470,10 @@ func NewConfig() *Config {
GRPCKeepAliveInterval: DefaultGRPCKeepAliveInterval, GRPCKeepAliveInterval: DefaultGRPCKeepAliveInterval,
GRPCKeepAliveTimeout: DefaultGRPCKeepAliveTimeout, GRPCKeepAliveTimeout: DefaultGRPCKeepAliveTimeout,
SocketOpts: transport.SocketOpts{}, SocketOpts: transport.SocketOpts{
ReusePort: false,
ReuseAddress: false,
},
TickMs: 100, TickMs: 100,
ElectionMs: 1000, ElectionMs: 1000,