From fbc1b3070d6c53edf961434f93d4e9e21ebb82bd Mon Sep 17 00:00:00 2001 From: Wentao Zhang Date: Fri, 2 Jun 2017 18:15:49 +0800 Subject: [PATCH] Limit max backoff delay to 2 seconds for GRPC connection Docker use default GRPC backoff strategy to reconnect to containerd when connection is lost. and the delay time grows exponentially, until reaches 120s. So Change the max delay time to 2s to avoid docker and containerd connection failure. Signed-off-by: Wentao Zhang (cherry picked from commit d3d8c77d195ce74f36ae6eee24578b9cac48f897) Signed-off-by: Andrew Hsu --- components/engine/libcontainerd/remote_unix.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/engine/libcontainerd/remote_unix.go b/components/engine/libcontainerd/remote_unix.go index 9f666a2788..bbbfa9c6f4 100644 --- a/components/engine/libcontainerd/remote_unix.go +++ b/components/engine/libcontainerd/remote_unix.go @@ -96,11 +96,13 @@ func New(stateDir string, options ...RemoteOption) (_ Remote, err error) { // don't output the grpc reconnect logging grpclog.SetLogger(log.New(ioutil.Discard, "", log.LstdFlags)) - dialOpts := append([]grpc.DialOption{grpc.WithInsecure()}, + dialOpts := []grpc.DialOption{ + grpc.WithInsecure(), + grpc.WithBackoffMaxDelay(2 * time.Second), grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { return net.DialTimeout("unix", addr, timeout) }), - ) + } conn, err := grpc.Dial(r.rpcAddr, dialOpts...) if err != nil { return nil, fmt.Errorf("error connecting to containerd: %v", err)