fix aggressive expiration detection (#11446)

for some flaky networks this may be too fast of a value
choose a defensive value, and let this be addressed
properly in a new refactor of dsync with renewal logic.

Also enable faster fallback delay to cater for misconfigured
IPv6 servers

refer
 - https://golang.org/pkg/net/#Dialer
 - https://tools.ietf.org/html/rfc6555
master
Harshavardhana 4 years ago committed by GitHub
parent 3fc4d6f620
commit da55a05587
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      cmd/http/dial_dnscache.go
  2. 6
      cmd/http/dial_linux.go
  3. 2
      cmd/local-locker.go
  4. 2
      cmd/lock-rest-server.go
  5. 1
      pkg/madmin/transport.go

@ -44,7 +44,9 @@ func DialContextWithDNSCache(cache *DNSCache, baseDialCtx DialContext) DialConte
baseDialCtx = (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
// If zero, Go defaults to '300ms', we will default to 100ms instead.
// https://tools.ietf.org/html/rfc6555
FallbackDelay: 100 * time.Millisecond,
}).DialContext
}
return func(ctx context.Context, network, host string) (net.Conn, error) {

@ -68,6 +68,9 @@ func NewInternodeDialContext(dialTimeout time.Duration) DialContext {
return func(ctx context.Context, network, addr string) (net.Conn, error) {
dialer := &net.Dialer{
Timeout: dialTimeout,
// If zero, Go defaults to '300ms', we will default to 100ms instead.
// https://tools.ietf.org/html/rfc6555
FallbackDelay: 100 * time.Millisecond,
Control: func(network, address string, c syscall.RawConn) error {
return setInternalTCPParameters(c)
},
@ -81,6 +84,9 @@ func NewCustomDialContext(dialTimeout time.Duration) DialContext {
return func(ctx context.Context, network, addr string) (net.Conn, error) {
dialer := &net.Dialer{
Timeout: dialTimeout,
// If zero, Go defaults to '300ms', we will default to 100ms instead.
// https://tools.ietf.org/html/rfc6555
FallbackDelay: 100 * time.Millisecond,
Control: func(network, address string, c syscall.RawConn) error {
return c.Control(func(fdPtr uintptr) {
// got socket file descriptor to set parameters.

@ -258,7 +258,7 @@ func (l *localLocker) Expired(ctx context.Context, args dsync.LockArgs) (expired
ep := globalRemoteEndpoints[args.Owner]
if !ep.IsLocal {
// check if the owner is online
return isServerResolvable(ep, 250*time.Millisecond) != nil, nil
return isServerResolvable(ep, 1*time.Second) != nil, nil
}
return false, nil
}

@ -302,7 +302,7 @@ func lockMaintenance(ctx context.Context, interval time.Duration) error {
for _, c := range lockers {
go func(lrip lockRequesterInfo, c dsync.NetLocker) {
defer wg.Done()
ctx, cancel := context.WithTimeout(GlobalContext, 3*time.Second)
ctx, cancel := context.WithTimeout(GlobalContext, 5*time.Second)
// Call back to all participating servers, verify
// if each of those servers think lock is still

@ -32,6 +32,7 @@ var DefaultTransport = func(secure bool) http.RoundTripper {
DialContext: (&net.Dialer{
Timeout: 5 * time.Second,
KeepAlive: 15 * time.Second,
FallbackDelay: 100 * time.Millisecond,
}).DialContext,
MaxIdleConns: 1024,
MaxIdleConnsPerHost: 1024,

Loading…
Cancel
Save