Merge pull request #99 from andrewhsu/grpc
[18.09] cluster: set bigger grpc limit for array requests
diff --git a/daemon/cluster/cluster.go b/daemon/cluster/cluster.go
index 35ba5a9..828748b 100644
--- a/daemon/cluster/cluster.go
+++ b/daemon/cluster/cluster.go
@@ -41,6 +41,7 @@
import (
"context"
"fmt"
+ "math"
"net"
"os"
"path/filepath"
@@ -67,9 +68,10 @@
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 c140376..d82c0f0 100644
--- a/daemon/cluster/services.go
+++ b/daemon/cluster/services.go
@@ -23,6 +23,7 @@
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 @@
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 de1240d..f1001ea 100644
--- a/daemon/cluster/tasks.go
+++ b/daemon/cluster/tasks.go
@@ -8,6 +8,7 @@
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 @@
r, err = state.controlClient.ListTasks(
ctx,
- &swarmapi.ListTasksRequest{Filters: filters})
+ &swarmapi.ListTasksRequest{Filters: filters},
+ grpc.MaxCallRecvMsgSize(defaultRecvSizeForListResponse),
+ )
return err
}); err != nil {
return nil, err