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 <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi 2018-10-29 17:44:11 -07:00
parent b8e87cfdad
commit 489b8eda66
3 changed files with 13 additions and 5 deletions

View File

@ -41,6 +41,7 @@ package cluster // import "github.com/docker/docker/daemon/cluster"
import ( import (
"context" "context"
"fmt" "fmt"
"math"
"net" "net"
"os" "os"
"path/filepath" "path/filepath"
@ -67,9 +68,10 @@ const stateFile = "docker-state.json"
const defaultAddr = "0.0.0.0:2377" const defaultAddr = "0.0.0.0:2377"
const ( const (
initialReconnectDelay = 100 * time.Millisecond initialReconnectDelay = 100 * time.Millisecond
maxReconnectDelay = 30 * time.Second maxReconnectDelay = 30 * time.Second
contextPrefix = "com.docker.swarm" contextPrefix = "com.docker.swarm"
defaultRecvSizeForListResponse = math.MaxInt32 // the max recv limit grpc <1.4.0
) )
// NetworkSubnetsProvider exposes functions for retrieving the subnets // NetworkSubnetsProvider exposes functions for retrieving the subnets

View File

@ -23,6 +23,7 @@ import (
gogotypes "github.com/gogo/protobuf/types" gogotypes "github.com/gogo/protobuf/types"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"google.golang.org/grpc"
) )
// GetServices returns all services of a managed swarm cluster. // 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( r, err := state.controlClient.ListServices(
ctx, ctx,
&swarmapi.ListServicesRequest{Filters: filters}) &swarmapi.ListServicesRequest{Filters: filters},
grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse),
)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -8,6 +8,7 @@ import (
types "github.com/docker/docker/api/types/swarm" types "github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/daemon/cluster/convert" "github.com/docker/docker/daemon/cluster/convert"
swarmapi "github.com/docker/swarmkit/api" swarmapi "github.com/docker/swarmkit/api"
"google.golang.org/grpc"
) )
// GetTasks returns a list of tasks matching the filter options. // 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( r, err = state.controlClient.ListTasks(
ctx, ctx,
&swarmapi.ListTasksRequest{Filters: filters}) &swarmapi.ListTasksRequest{Filters: filters},
grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse),
)
return err return err
}); err != nil { }); err != nil {
return nil, err return nil, err