mirror of https://github.com/minio/minio.git
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
This commit is contained in:
parent
3fc4d6f620
commit
da55a05587
|
@ -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
|
||||
|
|
|
@ -30,8 +30,9 @@ var DefaultTransport = func(secure bool) http.RoundTripper {
|
|||
tr := &http.Transport{
|
||||
Proxy: http.ProxyFromEnvironment,
|
||||
DialContext: (&net.Dialer{
|
||||
Timeout: 5 * time.Second,
|
||||
KeepAlive: 15 * time.Second,
|
||||
Timeout: 5 * time.Second,
|
||||
KeepAlive: 15 * time.Second,
|
||||
FallbackDelay: 100 * time.Millisecond,
|
||||
}).DialContext,
|
||||
MaxIdleConns: 1024,
|
||||
MaxIdleConnsPerHost: 1024,
|
||||
|
|
Loading…
Reference in New Issue