|
@ -0,0 +1,114 @@ |
|
|
|
|
|
From 63da3a548138640f96e631f10d6e2ee1bae3ed62 Mon Sep 17 00:00:00 2001 |
|
|
|
|
|
From: hmol233 <82594500+hmol233@users.noreply.github.com> |
|
|
|
|
|
Date: Mon, 20 Dec 2021 00:47:21 +0800 |
|
|
|
|
|
Subject: [PATCH] grpc: add initial_windows_size option |
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
infra/conf/grpc.go | 7 +++++++ |
|
|
|
|
|
transport/internet/grpc/config.pb.go | 23 +++++++++++++++++------ |
|
|
|
|
|
transport/internet/grpc/config.proto | 1 + |
|
|
|
|
|
transport/internet/grpc/dial.go | 4 ++++ |
|
|
|
|
|
4 files changed, 29 insertions(+), 6 deletions(-) |
|
|
|
|
|
|
|
|
|
|
|
--- a/infra/conf/grpc.go
|
|
|
|
|
|
+++ b/infra/conf/grpc.go
|
|
|
|
|
|
@@ -12,6 +12,7 @@ type GRPCConfig struct {
|
|
|
|
|
|
IdleTimeout int32 `json:"idle_timeout"` |
|
|
|
|
|
HealthCheckTimeout int32 `json:"health_check_timeout"` |
|
|
|
|
|
PermitWithoutStream bool `json:"permit_without_stream"` |
|
|
|
|
|
+ InitialWindowsSize int32 `json:"initial_windows_size"`
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (g *GRPCConfig) Build() (proto.Message, error) { |
|
|
|
|
|
@@ -21,11 +22,17 @@ func (g *GRPCConfig) Build() (proto.Mess
|
|
|
|
|
|
if g.HealthCheckTimeout <= 0 { |
|
|
|
|
|
g.HealthCheckTimeout = 0 |
|
|
|
|
|
} |
|
|
|
|
|
+ if g.InitialWindowsSize < 0 {
|
|
|
|
|
|
+ // default window size of gRPC-go
|
|
|
|
|
|
+ g.InitialWindowsSize = 0
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
|
|
|
return &grpc.Config{ |
|
|
|
|
|
ServiceName: g.ServiceName, |
|
|
|
|
|
MultiMode: g.MultiMode, |
|
|
|
|
|
IdleTimeout: g.IdleTimeout, |
|
|
|
|
|
HealthCheckTimeout: g.HealthCheckTimeout, |
|
|
|
|
|
PermitWithoutStream: g.PermitWithoutStream, |
|
|
|
|
|
+ InitialWindowsSize: g.InitialWindowsSize,
|
|
|
|
|
|
}, nil |
|
|
|
|
|
} |
|
|
|
|
|
--- a/transport/internet/grpc/config.pb.go
|
|
|
|
|
|
+++ b/transport/internet/grpc/config.pb.go
|
|
|
|
|
|
@@ -31,6 +31,7 @@ type Config struct {
|
|
|
|
|
|
IdleTimeout int32 `protobuf:"varint,4,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` |
|
|
|
|
|
HealthCheckTimeout int32 `protobuf:"varint,5,opt,name=health_check_timeout,json=healthCheckTimeout,proto3" json:"health_check_timeout,omitempty"` |
|
|
|
|
|
PermitWithoutStream bool `protobuf:"varint,6,opt,name=permit_without_stream,json=permitWithoutStream,proto3" json:"permit_without_stream,omitempty"` |
|
|
|
|
|
+ InitialWindowsSize int32 `protobuf:"varint,7,opt,name=initial_windows_size,json=initialWindowsSize,proto3" json:"initial_windows_size,omitempty"`
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (x *Config) Reset() { |
|
|
|
|
|
@@ -107,6 +108,13 @@ func (x *Config) GetPermitWithoutStream(
|
|
|
|
|
|
return false |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
+func (x *Config) GetInitialWindowsSize() int32 {
|
|
|
|
|
|
+ if x != nil {
|
|
|
|
|
|
+ return x.InitialWindowsSize
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+ return 0
|
|
|
|
|
|
+}
|
|
|
|
|
|
+
|
|
|
|
|
|
var File_transport_internet_grpc_config_proto protoreflect.FileDescriptor |
|
|
|
|
|
|
|
|
|
|
|
var file_transport_internet_grpc_config_proto_rawDesc = []byte{ |
|
|
|
|
|
@@ -114,7 +122,7 @@ var file_transport_internet_grpc_config_
|
|
|
|
|
|
0x72, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
|
|
|
|
|
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, |
|
|
|
|
|
0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, |
|
|
|
|
|
- 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xe7, 0x01,
|
|
|
|
|
|
+ 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x99, 0x02,
|
|
|
|
|
|
0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, |
|
|
|
|
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, |
|
|
|
|
|
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, |
|
|
|
|
|
@@ -129,11 +137,14 @@ var file_transport_internet_grpc_config_
|
|
|
|
|
|
0x6f, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x5f, 0x77, 0x69, |
|
|
|
|
|
0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, |
|
|
|
|
|
0x28, 0x08, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, |
|
|
|
|
|
- 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75,
|
|
|
|
|
|
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d,
|
|
|
|
|
|
- 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69,
|
|
|
|
|
|
- 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72,
|
|
|
|
|
|
- 0x6f, 0x74, 0x6f, 0x33,
|
|
|
|
|
|
+ 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x69,
|
|
|
|
|
|
+ 0x61, 0x6c, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
|
|
|
|
|
|
+ 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x57, 0x69,
|
|
|
|
|
|
+ 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74,
|
|
|
|
|
|
+ 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61,
|
|
|
|
|
|
+ 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
|
|
|
|
|
|
+ 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06,
|
|
|
|
|
|
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
|
--- a/transport/internet/grpc/config.proto
|
|
|
|
|
|
+++ b/transport/internet/grpc/config.proto
|
|
|
|
|
|
@@ -10,4 +10,5 @@ message Config {
|
|
|
|
|
|
int32 idle_timeout = 4; |
|
|
|
|
|
int32 health_check_timeout = 5; |
|
|
|
|
|
bool permit_without_stream = 6; |
|
|
|
|
|
+ int32 initial_windows_size = 7;
|
|
|
|
|
|
} |
|
|
|
|
|
--- a/transport/internet/grpc/dial.go
|
|
|
|
|
|
+++ b/transport/internet/grpc/dial.go
|
|
|
|
|
|
@@ -135,6 +135,10 @@ func getGrpcClient(ctx context.Context,
|
|
|
|
|
|
})) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
+ if grpcSettings.InitialWindowsSize > 0 {
|
|
|
|
|
|
+ dialOptions = append(dialOptions, grpc.WithInitialWindowSize(grpcSettings.InitialWindowsSize))
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
|
|
|
var grpcDestHost string |
|
|
|
|
|
if dest.Address.Family().IsDomain() { |
|
|
|
|
|
grpcDestHost = dest.Address.Domain() |