From d2ca7822778a32654aeb9e22e9e469af3b9a1e3f Mon Sep 17 00:00:00 2001 From: fanmin shi Date: Tue, 22 Aug 2017 14:05:55 -0700 Subject: [PATCH] v3rpc: limit recv size using MaxRecvMsgSize and send using MaxSendMsgSize grpc 1.3 uses MaxMsgSize() to limit received message size. However, grpc 1.4 introduces a 4mb default limit on send message size. In etcd, server shouldn't be limit size of message that it can be sent. Hence, set maximum size of send message using MaxSendMsgSize(). --- etcdserver/api/v3rpc/grpc.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/etcdserver/api/v3rpc/grpc.go b/etcdserver/api/v3rpc/grpc.go index 19943ff52d5..3f7cea8ee08 100644 --- a/etcdserver/api/v3rpc/grpc.go +++ b/etcdserver/api/v3rpc/grpc.go @@ -31,6 +31,7 @@ import ( const ( grpcOverheadBytes = 512 * 1024 maxStreams = math.MaxUint32 + maxSendBytes = math.MaxInt32 ) func init() { @@ -45,7 +46,8 @@ 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.MaxRecvMsgSize(int(s.Cfg.MaxRequestBytes+grpcOverheadBytes))) + opts = append(opts, grpc.MaxSendMsgSize(maxSendBytes)) opts = append(opts, grpc.MaxConcurrentStreams(maxStreams)) grpcServer := grpc.NewServer(opts...)