Skip to content

Commit 489b8ed

Browse files
committed
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 <[email protected]>
1 parent b8e87cf commit 489b8ed

3 files changed

Lines changed: 13 additions & 5 deletions

File tree

daemon/cluster/cluster.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ package cluster // import "github.com/docker/docker/daemon/cluster"
4141
import (
4242
"context"
4343
"fmt"
44+
"math"
4445
"net"
4546
"os"
4647
"path/filepath"
@@ -67,9 +68,10 @@ const stateFile = "docker-state.json"
6768
const defaultAddr = "0.0.0.0:2377"
6869

6970
const (
70-
initialReconnectDelay = 100 * time.Millisecond
71-
maxReconnectDelay = 30 * time.Second
72-
contextPrefix = "com.docker.swarm"
71+
initialReconnectDelay = 100 * time.Millisecond
72+
maxReconnectDelay = 30 * time.Second
73+
contextPrefix = "com.docker.swarm"
74+
defaultRecvSizeForListResponse = math.MaxInt32 // the max recv limit grpc <1.4.0
7375
)
7476

7577
// NetworkSubnetsProvider exposes functions for retrieving the subnets

daemon/cluster/services.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
gogotypes "github.com/gogo/protobuf/types"
2424
"github.com/pkg/errors"
2525
"github.com/sirupsen/logrus"
26+
"google.golang.org/grpc"
2627
)
2728

2829
// GetServices returns all services of a managed swarm cluster.
@@ -67,7 +68,9 @@ func (c *Cluster) GetServices(options apitypes.ServiceListOptions) ([]types.Serv
6768

6869
r, err := state.controlClient.ListServices(
6970
ctx,
70-
&swarmapi.ListServicesRequest{Filters: filters})
71+
&swarmapi.ListServicesRequest{Filters: filters},
72+
grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse),
73+
)
7174
if err != nil {
7275
return nil, err
7376
}

daemon/cluster/tasks.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
types "github.com/docker/docker/api/types/swarm"
99
"github.com/docker/docker/daemon/cluster/convert"
1010
swarmapi "github.com/docker/swarmkit/api"
11+
"google.golang.org/grpc"
1112
)
1213

1314
// GetTasks returns a list of tasks matching the filter options.
@@ -53,7 +54,9 @@ func (c *Cluster) GetTasks(options apitypes.TaskListOptions) ([]types.Task, erro
5354

5455
r, err = state.controlClient.ListTasks(
5556
ctx,
56-
&swarmapi.ListTasksRequest{Filters: filters})
57+
&swarmapi.ListTasksRequest{Filters: filters},
58+
grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse),
59+
)
5760
return err
5861
}); err != nil {
5962
return nil, err

0 commit comments

Comments
 (0)