From 62d24930a3ab918c77221e7a4c49db39b7b7620c Mon Sep 17 00:00:00 2001 From: sushmith Date: Wed, 14 Dec 2022 15:32:41 +0530 Subject: [PATCH 1/2] chore: increase grpc max call send & receive msg size --- go.mod | 1 - internal/server/server.go | 13 ++++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 9828ec70..c36b0a8a 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,6 @@ require ( go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.21.0 // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect - golang.org/x/net v0.0.0-20220919232410-f2f64ebce3c1 golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc google.golang.org/grpc v1.49.0 diff --git a/internal/server/server.go b/internal/server/server.go index 6fd27b67..e449f5ea 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -30,6 +30,10 @@ import ( "google.golang.org/protobuf/encoding/protojson" ) +const ( + GRPCMaxClientSendSize = 32 << 20 +) + type Config struct { Host string `mapstructure:"host" default:"0.0.0.0"` Port int `mapstructure:"port" default:"8080"` @@ -100,7 +104,14 @@ func Serve( headerMatcher := makeHeaderMatcher(config) - grpcConn, err := grpc.DialContext(grpcDialCtx, config.grpcAddr(), grpc.WithTransportCredentials(insecure.NewCredentials())) + grpcConn, err := grpc.DialContext( + grpcDialCtx, + config.grpcAddr(), + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(GRPCMaxClientSendSize), + grpc.MaxCallSendMsgSize(GRPCMaxClientSendSize), + )) if err != nil { return err } From e27850404939385a371ceecbfacd83b5fee2a6a0 Mon Sep 17 00:00:00 2001 From: sushmith Date: Wed, 18 Jan 2023 15:15:01 +0530 Subject: [PATCH 2/2] feat: make grpc call send & recv size configurable * add support for user configurability of max call recv and send size in grpc config --- compass.yaml.example | 5 ++++- internal/server/server.go | 26 +++++++++++++++----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/compass.yaml.example b/compass.yaml.example index 97af8776..c8d6c43c 100644 --- a/compass.yaml.example +++ b/compass.yaml.example @@ -24,11 +24,14 @@ db: service: host: localhost port: 8080 - grpc_port: 8081 identity: headerkey_uuid: Compass-User-UUID headerkey_email: Compass-User-Email provider_default_name: shield + grpc: + port: 8081 + max_send_msg_size: 33554432 + max_recv_msg_size: 33554432 client: host: localhost:8080 diff --git a/internal/server/server.go b/internal/server/server.go index e449f5ea..e1ab62df 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -30,22 +30,20 @@ import ( "google.golang.org/protobuf/encoding/protojson" ) -const ( - GRPCMaxClientSendSize = 32 << 20 -) - type Config struct { - Host string `mapstructure:"host" default:"0.0.0.0"` - Port int `mapstructure:"port" default:"8080"` - GRPCPort int `mapstructure:"grpc_port" default:"8081"` - BaseUrl string `mapstructure:"baseurl" default:"localhost:8080"` + Host string `mapstructure:"host" default:"0.0.0.0"` + Port int `mapstructure:"port" default:"8080"` + BaseUrl string `mapstructure:"baseurl" default:"localhost:8080"` // User Identity Identity IdentityConfig `mapstructure:"identity"` + + // GRPC Config + GRPC GRPCConfig `mapstructure:"grpc"` } func (cfg Config) addr() string { return fmt.Sprintf("%s:%d", cfg.Host, cfg.Port) } -func (cfg Config) grpcAddr() string { return fmt.Sprintf("%s:%d", cfg.Host, cfg.GRPCPort) } +func (cfg Config) grpcAddr() string { return fmt.Sprintf("%s:%d", cfg.Host, cfg.GRPC.Port) } type IdentityConfig struct { // User Identity @@ -55,6 +53,12 @@ type IdentityConfig struct { ProviderDefaultName string `mapstructure:"provider_default_name" default:""` } +type GRPCConfig struct { + Port int `mapstructure:"port" default:"8081"` + MaxRecvMsgSize int `mapstructure:"max_recv_msg_size" default:"33554432"` + MaxSendMsgSize int `mapstructure:"max_send_msg_size" default:"33554432"` +} + func Serve( ctx context.Context, config Config, @@ -109,8 +113,8 @@ func Serve( config.grpcAddr(), grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultCallOptions( - grpc.MaxCallRecvMsgSize(GRPCMaxClientSendSize), - grpc.MaxCallSendMsgSize(GRPCMaxClientSendSize), + grpc.MaxCallRecvMsgSize(config.GRPC.MaxRecvMsgSize), + grpc.MaxCallSendMsgSize(config.GRPC.MaxSendMsgSize), )) if err != nil { return err