From 536a5f594b60200f43ba04ccc5f942434a55202b 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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/etcdserver/api/v3rpc/grpc.go b/etcdserver/api/v3rpc/grpc.go index 88174e3ba..68a7c120e 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" @@ -24,6 +25,8 @@ import ( "google.golang.org/grpc/grpclog" ) +const maxStreams = math.MaxUint32 + func init() { grpclog.SetLogger(plog) } @@ -36,8 +39,9 @@ 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.MaxConcurrentStreams(maxStreams)) grpcServer := grpc.NewServer(opts...) + pb.RegisterKVServer(grpcServer, NewQuotaKVServer(s)) pb.RegisterWatchServer(grpcServer, NewWatchServer(s)) pb.RegisterLeaseServer(grpcServer, NewQuotaLeaseServer(s))