You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/12/07 05:54:07 UTC

[dubbo-go] branch 3.0 updated: Ftr: add triple max size configuration (#1654)

This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 0ff42ce  Ftr: add triple max size configuration (#1654)
0ff42ce is described below

commit 0ff42cebbe0d7722cedde8a9ceefeb66d644360e
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Tue Dec 7 13:54:02 2021 +0800

    Ftr: add triple max size configuration (#1654)
---
 common/constant/key.go             |  8 ++++++--
 common/rpc_service.go              |  7 ++++---
 go.mod                             |  2 +-
 go.sum                             |  4 ++--
 protocol/dubbo3/dubbo3_invoker.go  | 11 ++++++++++-
 protocol/dubbo3/dubbo3_protocol.go | 12 ++++++++++++
 6 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/common/constant/key.go b/common/constant/key.go
index b896af7..97d2851 100644
--- a/common/constant/key.go
+++ b/common/constant/key.go
@@ -52,8 +52,12 @@ const (
 	CommaSeparator         = ","
 	SslEnabledKey          = "ssl-enabled"
 	// ParamsTypeKey key used in pass through invoker factory, to define param type
-	ParamsTypeKey   = "parameter-type-names"
-	MetadataTypeKey = "metadata-type"
+	ParamsTypeKey        = "parameter-type-names"
+	MetadataTypeKey      = "metadata-type"
+	MaxCallSendMsgSize   = "max-call-send-msg-size"
+	MaxServerSendMsgSize = "max-server-send-msg-size"
+	MaxCallRecvMsgSize   = "max-call-recv-msg-size"
+	MaxServerRecvMsgSize = "max-server-recv-msg-size"
 )
 
 const (
diff --git a/common/rpc_service.go b/common/rpc_service.go
index a24a778..dedac04 100644
--- a/common/rpc_service.go
+++ b/common/rpc_service.go
@@ -382,9 +382,10 @@ func suiteMethod(method reflect.Method) *MethodType {
 		argsType           []reflect.Type
 	)
 
-	// Reference is used to define service reference, and method with prefix 'XXX' is generated by triple pb tool
-	// They should not to be exported
-	if mname == "Reference" || strings.HasPrefix(mname, "XXX") {
+	// Reference is used to define service reference, and method with prefix 'XXX' is generated by triple pb tool.
+	// SetGRPCServer is used for pb reflection.
+	// They should not to be checked.
+	if mname == "Reference" || mname == "SetGRPCServer" || strings.HasPrefix(mname, "XXX") {
 		return nil
 	}
 
diff --git a/go.mod b/go.mod
index 8319c96..b81a578 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,7 @@ require (
 	github.com/dubbogo/go-zookeeper v1.0.3
 	github.com/dubbogo/gost v1.11.20-0.20211116110728-26777ca61b4a
 	github.com/dubbogo/grpc-go v1.42.6-triple
-	github.com/dubbogo/triple v1.1.6-0.20211119123944-4ad68a0d048e
+	github.com/dubbogo/triple v1.1.6
 	github.com/emicklei/go-restful/v3 v3.7.2
 	github.com/fsnotify/fsnotify v1.5.1
 	github.com/ghodss/yaml v1.0.0
diff --git a/go.sum b/go.sum
index 0abe072..86df222 100644
--- a/go.sum
+++ b/go.sum
@@ -192,8 +192,8 @@ github.com/dubbogo/grpc-go v1.42.6-triple/go.mod h1:F1T9hnUvYGW4JLK1QNriavpOkhus
 github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU=
 github.com/dubbogo/net v0.0.4/go.mod h1:1CGOnM7X3he+qgGNqjeADuE5vKZQx/eMSeUkpU3ujIc=
 github.com/dubbogo/triple v1.0.9/go.mod h1:1t9me4j4CTvNDcsMZy6/OGarbRyAUSY0tFXGXHCp7Iw=
-github.com/dubbogo/triple v1.1.6-0.20211119123944-4ad68a0d048e h1:GJDV0dOaKwSP/4i8eaDNJ/FpH3sW9czArA0MGj4BZ8Q=
-github.com/dubbogo/triple v1.1.6-0.20211119123944-4ad68a0d048e/go.mod h1:5lGslNo9Tq8KR8+tSSSJkhypNaREYZCKCk0Owx40Cx4=
+github.com/dubbogo/triple v1.1.6 h1:+OxaOm++o/ubuZw4TI5xDpswpC3DnwIGxeYO9m+oVAM=
+github.com/dubbogo/triple v1.1.6/go.mod h1:5lGslNo9Tq8KR8+tSSSJkhypNaREYZCKCk0Owx40Cx4=
 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
 github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
diff --git a/protocol/dubbo3/dubbo3_invoker.go b/protocol/dubbo3/dubbo3_invoker.go
index 88af74d..7b15838 100644
--- a/protocol/dubbo3/dubbo3_invoker.go
+++ b/protocol/dubbo3/dubbo3_invoker.go
@@ -69,7 +69,6 @@ func NewDubboInvoker(url *common.URL) (*DubboInvoker, error) {
 	dubboSerializaerType := url.GetParam(constant.SerializationKey, constant.ProtobufSerialization)
 	triCodecType := tripleConstant.CodecType(dubboSerializaerType)
 	// new triple client
-
 	opts := []triConfig.OptionFunction{
 		triConfig.WithClientTimeout(uint32(timeout.Seconds())),
 		triConfig.WithCodecType(triCodecType),
@@ -78,6 +77,16 @@ func NewDubboInvoker(url *common.URL) (*DubboInvoker, error) {
 		triConfig.WithHeaderGroup(url.GetParam(constant.GroupKey, "")),
 		triConfig.WithLogger(logger.GetLogger()),
 	}
+	if maxCall := url.GetParam(constant.MaxCallRecvMsgSize, ""); maxCall != "" {
+		if size, err := strconv.Atoi(maxCall); err == nil && size != 0 {
+			opts = append(opts, triConfig.WithGRPCMaxCallRecvMessageSize(size))
+		}
+	}
+	if maxCall := url.GetParam(constant.MaxCallSendMsgSize, ""); maxCall != "" {
+		if size, err := strconv.Atoi(maxCall); err == nil && size != 0 {
+			opts = append(opts, triConfig.WithGRPCMaxCallSendMessageSize(size))
+		}
+	}
 
 	tracingKey := url.GetParam(constant.TracingConfigKey, "")
 	if tracingKey != "" {
diff --git a/protocol/dubbo3/dubbo3_protocol.go b/protocol/dubbo3/dubbo3_protocol.go
index 78f5308..6ff8281 100644
--- a/protocol/dubbo3/dubbo3_protocol.go
+++ b/protocol/dubbo3/dubbo3_protocol.go
@@ -21,6 +21,7 @@ import (
 	"context"
 	"fmt"
 	"reflect"
+	"strconv"
 	"sync"
 )
 
@@ -234,6 +235,17 @@ func (dp *DubboProtocol) openServer(url *common.URL, tripleCodecType tripleConst
 		}
 	}
 
+	if maxCall := url.GetParam(constant.MaxServerRecvMsgSize, ""); maxCall != "" {
+		if size, err := strconv.Atoi(maxCall); err == nil && size != 0 {
+			opts = append(opts, triConfig.WithGRPCMaxServerRecvMessageSize(size))
+		}
+	}
+	if maxCall := url.GetParam(constant.MaxServerSendMsgSize, ""); maxCall != "" {
+		if size, err := strconv.Atoi(maxCall); err == nil && size != 0 {
+			opts = append(opts, triConfig.WithGRPCMaxServerSendMessageSize(size))
+		}
+	}
+
 	triOption := triConfig.NewTripleOption(opts...)
 
 	_, ok = dp.ExporterMap().Load(url.ServiceKey())