From 489b8eda6674523df8b82a210399b7d2954427d0 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Mon, 29 Oct 2018 17:44:11 -0700 Subject: [PATCH] cluster: set bigger grpc limit for array requests 4MB client side limit was introduced in vendoring go-grpc#1165 (v1.4.0) making these requests likely to produce errors Signed-off-by: Tonis Tiigi --- daemon/cluster/cluster.go | 8 +++++--- daemon/cluster/services.go | 5 ++++- daemon/cluster/tasks.go | 5 ++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/daemon/cluster/cluster.go b/daemon/cluster/cluster.go index 35ba5a9378..828748bc5c 100644 --- a/daemon/cluster/cluster.go +++ b/daemon/cluster/cluster.go @@ -41,6 +41,7 @@ package cluster // import "github.com/docker/docker/daemon/cluster" import ( "context" "fmt" + "math" "net" "os" "path/filepath" @@ -67,9 +68,10 @@ const stateFile = "docker-state.json" const defaultAddr = "0.0.0.0:2377" const ( - initialReconnectDelay = 100 * time.Millisecond - maxReconnectDelay = 30 * time.Second - contextPrefix = "com.docker.swarm" + initialReconnectDelay = 100 * time.Millisecond + maxReconnectDelay = 30 * time.Second + contextPrefix = "com.docker.swarm" + defaultRecvSizeForListResponse = math.MaxInt32 // the max recv limit grpc <1.4.0 ) // NetworkSubnetsProvider exposes functions for retrieving the subnets diff --git a/daemon/cluster/services.go b/daemon/cluster/services.go index c14037645c..d82c0f0f3a 100644 --- a/daemon/cluster/services.go +++ b/daemon/cluster/services.go @@ -23,6 +23,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" "github.com/sirupsen/logrus" + "google.golang.org/grpc" ) // GetServices returns all services of a managed swarm cluster. @@ -67,7 +68,9 @@ func (c *Cluster) GetServices(options apitypes.ServiceListOptions) ([]types.Serv r, err := state.controlClient.ListServices( ctx, - &swarmapi.ListServicesRequest{Filters: filters}) + &swarmapi.ListServicesRequest{Filters: filters}, + grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse), + ) if err != nil { return nil, err } diff --git a/daemon/cluster/tasks.go b/daemon/cluster/tasks.go index de1240dfe8..f1001ea0ba 100644 --- a/daemon/cluster/tasks.go +++ b/daemon/cluster/tasks.go @@ -8,6 +8,7 @@ import ( types "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/daemon/cluster/convert" swarmapi "github.com/docker/swarmkit/api" + "google.golang.org/grpc" ) // GetTasks returns a list of tasks matching the filter options. @@ -53,7 +54,9 @@ func (c *Cluster) GetTasks(options apitypes.TaskListOptions) ([]types.Task, erro r, err = state.controlClient.ListTasks( ctx, - &swarmapi.ListTasksRequest{Filters: filters}) + &swarmapi.ListTasksRequest{Filters: filters}, + grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse), + ) return err }); err != nil { return nil, err