From 52101e6e933d764d2b9ec476ed53647f43040ce2 Mon Sep 17 00:00:00 2001 From: Iwasaki Yudai Date: Fri, 7 Jul 2017 20:39:05 -0700 Subject: [PATCH] v3rpc: 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 10d58a88028..19943ff52d5 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))