diff --git a/daemon/daemon.go b/daemon/daemon.go index 59dae5d932..ed7dde7099 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -901,13 +901,17 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S return nil, err } + const connTimeout = 60 * time.Second + // Set the max backoff delay to match our containerd.WithTimeout(), // aligning with how containerd client's defaults sets this; // https://github.com/containerd/containerd/blob/v2.0.2/client/client.go#L129-L136 backoffConfig := backoff.DefaultConfig - backoffConfig.MaxDelay = 60 * time.Second + backoffConfig.MaxDelay = connTimeout connParams := grpc.ConnectParams{ Backoff: backoffConfig, + // TODO: Remove after https://github.com/containerd/containerd/pull/11508 + MinConnectTimeout: connTimeout, } gopts := []grpc.DialOption{ // ------------------------------------------------------------------ @@ -931,11 +935,15 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S } if cfgStore.ContainerdAddr != "" { + log.G(ctx).WithFields(log.Fields{ + "address": cfgStore.ContainerdAddr, + "timeout": connTimeout, + }).Info("Creating a containerd client") d.containerdClient, err = containerd.New( cfgStore.ContainerdAddr, containerd.WithDefaultNamespace(cfgStore.ContainerdNamespace), containerd.WithDialOpts(gopts), - containerd.WithTimeout(60*time.Second), + containerd.WithTimeout(connTimeout), ) if err != nil { return nil, errors.Wrapf(err, "failed to dial %q", cfgStore.ContainerdAddr) @@ -950,7 +958,7 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S cfgStore.ContainerdAddr, containerd.WithDefaultNamespace(cfgStore.ContainerdPluginNamespace), containerd.WithDialOpts(gopts), - containerd.WithTimeout(60*time.Second), + containerd.WithTimeout(connTimeout), ) if err != nil { return nil, errors.Wrapf(err, "failed to dial %q", cfgStore.ContainerdAddr) diff --git a/libcontainerd/supervisor/remote_daemon.go b/libcontainerd/supervisor/remote_daemon.go index b0ad0b940e..800c9d9540 100644 --- a/libcontainerd/supervisor/remote_daemon.go +++ b/libcontainerd/supervisor/remote_daemon.go @@ -280,14 +280,19 @@ func (r *remote) monitorDaemon(ctx context.Context) { continue } + const connTimeout = 60 * time.Second client, err = containerd.New( r.GRPC.Address, - containerd.WithTimeout(60*time.Second), + containerd.WithTimeout(connTimeout), containerd.WithDialOpts([]grpc.DialOption{ grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(dialer.ContextDialer), grpc.WithUnaryInterceptor(grpcerrors.UnaryClientInterceptor), grpc.WithStreamInterceptor(grpcerrors.StreamClientInterceptor), + grpc.WithConnectParams(grpc.ConnectParams{ + // TODO: Remove after https://github.com/containerd/containerd/pull/11508 + MinConnectTimeout: connTimeout, + }), }), ) if err != nil {