From c7c6aa43c0c9b55ca00fc8c1d08bc95e94480745 Mon Sep 17 00:00:00 2001 From: Iwasaki Yudai Date: Fri, 7 Jul 2017 20:39:05 -0700 Subject: [PATCH] etcdserver: Let clients establish unlimited streams From go-grpc v1.2.0, the number of max streams per client is set to 100 by default by the server side. This change makes it impossible for third party proxies and custom clients to establish many streams. --- etcdserver/api/v3rpc/grpc.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/etcdserver/api/v3rpc/grpc.go b/etcdserver/api/v3rpc/grpc.go index 10d58a880283..19943ff52d55 100644 --- a/etcdserver/api/v3rpc/grpc.go +++ b/etcdserver/api/v3rpc/grpc.go @@ -16,6 +16,7 @@ package v3rpc import ( "crypto/tls" + "math" "github.com/coreos/etcd/etcdserver" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" @@ -27,7 +28,10 @@ import ( healthpb "google.golang.org/grpc/health/grpc_health_v1" ) -const grpcOverheadBytes = 512 * 1024 +const ( + grpcOverheadBytes = 512 * 1024 + maxStreams = math.MaxUint32 +) func init() { grpclog.SetLogger(plog) @@ -42,6 +46,7 @@ func Server(s *etcdserver.EtcdServer, tls *tls.Config) *grpc.Server { opts = append(opts, grpc.UnaryInterceptor(newUnaryInterceptor(s))) opts = append(opts, grpc.StreamInterceptor(newStreamInterceptor(s))) opts = append(opts, grpc.MaxMsgSize(int(s.Cfg.MaxRequestBytes+grpcOverheadBytes))) + opts = append(opts, grpc.MaxConcurrentStreams(maxStreams)) grpcServer := grpc.NewServer(opts...) pb.RegisterKVServer(grpcServer, NewQuotaKVServer(s))