This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch release-3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/release-3.0 by this push:
new 29614de38 fix: solve config bool field zero value bug by using pointer
(#2338)
29614de38 is described below
commit 29614de382da296a5a113c1642422d660ee216e8
Author: Wang Guan <[email protected]>
AuthorDate: Mon Jun 19 13:37:11 2023 +0800
fix: solve config bool field zero value bug by using pointer (#2338)
fixes #2336
---
cluster/router/tag/match.go | 2 +-
cluster/router/tag/router.go | 7 ++---
cluster/router/tag/router_test.go | 54 ++++++++++++++++++++------------------
config/logger_config.go | 10 +++----
config/provider_config.go | 4 +--
config/router_config.go | 16 +++++------
config/tracing_config.go | 2 +-
config/tracing_config_test.go | 2 +-
protocol/dubbo3/dubbo3_invoker.go | 2 +-
protocol/dubbo3/dubbo3_protocol.go | 2 +-
10 files changed, 53 insertions(+), 48 deletions(-)
diff --git a/cluster/router/tag/match.go b/cluster/router/tag/match.go
index f9f900e03..14633606a 100644
--- a/cluster/router/tag/match.go
+++ b/cluster/router/tag/match.go
@@ -117,7 +117,7 @@ func requestTag(invokers []protocol.Invoker, url
*common.URL, invocation protoco
logger.Debugf("[tag router] filter dynamic tag address,
invokers=%+v", result)
}
// returns the result directly
- if cfg.Force || requestIsForce(url, invocation) {
+ if *cfg.Force || requestIsForce(url, invocation) {
return result
}
if len(result) != 0 {
diff --git a/cluster/router/tag/router.go b/cluster/router/tag/router.go
index d642a792a..9b438cf13 100644
--- a/cluster/router/tag/router.go
+++ b/cluster/router/tag/router.go
@@ -58,7 +58,7 @@ func (p *PriorityRouter) Route(invokers []protocol.Invoker,
url *common.URL, inv
return staticTag(invokers, url, invocation)
}
routerCfg := value.(config.RouterConfig)
- if !routerCfg.Enabled || !routerCfg.Valid {
+ if !*routerCfg.Enabled || !*routerCfg.Valid {
return staticTag(invokers, url, invocation)
}
return dynamicTag(invokers, url, invocation, routerCfg)
@@ -118,9 +118,10 @@ func parseRoute(routeContent string)
(*config.RouterConfig, error) {
if err != nil {
return nil, err
}
- routerConfig.Valid = true
+ routerConfig.Valid = new(bool)
+ *routerConfig.Valid = true
if len(routerConfig.Tags) == 0 {
- routerConfig.Valid = false
+ *routerConfig.Valid = false
}
return routerConfig, nil
}
diff --git a/cluster/router/tag/router_test.go
b/cluster/router/tag/router_test.go
index 22ddba793..198781394 100644
--- a/cluster/router/tag/router_test.go
+++ b/cluster/router/tag/router_test.go
@@ -53,6 +53,10 @@ func initUrl() {
func TestRouter(t *testing.T) {
initUrl()
+ trueValue := true
+ truePointer := &trueValue
+ falseValue := false
+ falsePointer := &falseValue
t.Run("staticEmptyTag", func(t *testing.T) {
p, err := NewTagPriorityRouter()
assert.Nil(t, err)
@@ -131,9 +135,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
})
ivk := protocol.NewBaseInvoker(url1)
ivk1 := protocol.NewBaseInvoker(url2)
@@ -151,9 +155,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
})
ivk := protocol.NewBaseInvoker(url1)
ivk1 := protocol.NewBaseInvoker(url2)
@@ -172,9 +176,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
Tags: []config.Tag{{
Name: "tag",
Addresses: []string{"192.168.0.3:20000"},
@@ -196,9 +200,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
Tags: []config.Tag{{
Name: "tag",
}},
@@ -220,9 +224,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
Tags: []config.Tag{{
Name: "tag",
Addresses: []string{"192.168.0.3:20000"},
@@ -245,9 +249,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
Tags: []config.Tag{{
Name: "tag",
Addresses: []string{"192.168.0.1:20000",
"192.168.0.3:20000"},
@@ -270,9 +274,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: true,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: truePointer,
Tags: []config.Tag{{
Name: "tag",
Addresses: []string{"192.168.0.4:20000"},
@@ -295,9 +299,9 @@ func TestRouter(t *testing.T) {
assert.Nil(t, err)
p.routerConfigs.Store(consumerUrl.Service()+constant.TagRouterRuleSuffix,
config.RouterConfig{
Key: consumerUrl.Service() +
constant.TagRouterRuleSuffix,
- Force: false,
- Enabled: true,
- Valid: false,
+ Force: falsePointer,
+ Enabled: truePointer,
+ Valid: falsePointer,
Tags: []config.Tag{{
Name: "tag",
Addresses: []string{"192.168.0.1:20000",
"192.168.0.3:20000"},
@@ -364,7 +368,7 @@ tags:
routerCfg := value.(config.RouterConfig)
assert.True(t, routerCfg.Key ==
"org.apache.dubbo.UserProvider.Test")
assert.True(t, len(routerCfg.Tags) == 2)
- assert.True(t, routerCfg.Enabled)
+ assert.True(t, *routerCfg.Enabled)
})
t.Run("configNotValid", func(t *testing.T) {
diff --git a/config/logger_config.go b/config/logger_config.go
index 872c444c6..ff062cd39 100644
--- a/config/logger_config.go
+++ b/config/logger_config.go
@@ -41,9 +41,9 @@ import (
type ZapConfig struct {
Level string `default:"info"
json:"level,omitempty" yaml:"level" property:"level"`
- Development bool `default:"false"
json:"development,omitempty" yaml:"development" property:"development"`
- DisableCaller bool `default:"false"
json:"disable-caller,omitempty" yaml:"disable-caller" property:"disable-caller"`
- DisableStacktrace bool `default:"false"
json:"disable-stacktrace,omitempty" yaml:"disable-stacktrace"
property:"disable-stacktrace"`
+ Development *bool `default:"false"
json:"development,omitempty" yaml:"development" property:"development"`
+ DisableCaller *bool `default:"false"
json:"disable-caller,omitempty" yaml:"disable-caller" property:"disable-caller"`
+ DisableStacktrace *bool `default:"false"
json:"disable-stacktrace,omitempty" yaml:"disable-stacktrace"
property:"disable-stacktrace"`
Encoding string `default:"console"
json:"encoding,omitempty" yaml:"encoding" property:"encoding"`
EncoderConfig EncoderConfig `default:""
json:"encoder-config,omitempty" yaml:"encoder-config" property:"encoder-config"`
OutputPaths []string `default:"[\"stderr\"]"
json:"output-paths,omitempty" yaml:"output-paths" property:"output-paths"`
@@ -110,8 +110,8 @@ func (lc *LoggerConfig) check() error {
func (e *ZapConfig) setZapConfig(config *zap.Config) {
config.OutputPaths = e.OutputPaths
config.ErrorOutputPaths = e.ErrorOutputPaths
- config.DisableStacktrace = e.DisableStacktrace
- config.DisableCaller = e.DisableCaller
+ config.DisableStacktrace = *e.DisableStacktrace
+ config.DisableCaller = *e.DisableCaller
config.InitialFields = e.InitialFields
}
diff --git a/config/provider_config.go b/config/provider_config.go
index d70cf6b0c..ab58b12c4 100644
--- a/config/provider_config.go
+++ b/config/provider_config.go
@@ -54,8 +54,8 @@ type ProviderConfig struct {
FilterConf interface{} `yaml:"filter_conf"
json:"filter_conf,omitempty" property:"filter_conf"`
ConfigType map[string]string `yaml:"config_type"
json:"config_type,omitempty" property:"config_type"`
// adaptive service
- AdaptiveService bool `default:"false" yaml:"adaptive-service"
json:"adaptive-service" property:"adaptive-service"`
- AdaptiveServiceVerbose bool `default:"false"
yaml:"adaptive-service-verbose" json:"adaptive-service-verbose"
property:"adaptive-service-verbose"`
+ AdaptiveService bool `yaml:"adaptive-service"
json:"adaptive-service" property:"adaptive-service"`
+ AdaptiveServiceVerbose bool `yaml:"adaptive-service-verbose"
json:"adaptive-service-verbose" property:"adaptive-service-verbose"`
rootConfig *RootConfig
}
diff --git a/config/router_config.go b/config/router_config.go
index ed9babf64..616e994ea 100644
--- a/config/router_config.go
+++ b/config/router_config.go
@@ -31,10 +31,10 @@ import (
type RouterConfig struct {
Scope string `validate:"required" yaml:"scope"
json:"scope,omitempty" property:"scope"` // must be chosen from `service` and
`application`.
Key string `validate:"required" yaml:"key"
json:"key,omitempty" property:"key"` // specifies which service or
application the rule body acts on.
- Force bool `default:"false" yaml:"force"
json:"force,omitempty" property:"force"`
- Runtime bool `default:"false" yaml:"runtime"
json:"runtime,omitempty" property:"runtime"`
- Enabled bool `default:"true" yaml:"enabled"
json:"enabled,omitempty" property:"enabled"`
- Valid bool `default:"true" yaml:"valid" json:"valid,omitempty"
property:"valid"`
+ Force *bool `default:"false" yaml:"force"
json:"force,omitempty" property:"force"`
+ Runtime *bool `default:"false" yaml:"runtime"
json:"runtime,omitempty" property:"runtime"`
+ Enabled *bool `default:"true" yaml:"enabled"
json:"enabled,omitempty" property:"enabled"`
+ Valid *bool `default:"true" yaml:"valid" json:"valid,omitempty"
property:"valid"`
Priority int `default:"0" yaml:"priority"
json:"priority,omitempty" property:"priority"`
Conditions []string `yaml:"conditions" json:"conditions,omitempty"
property:"conditions"`
Tags []Tag `yaml:"tags" json:"tags,omitempty" property:"tags"`
@@ -91,22 +91,22 @@ func (rcb *RouterConfigBuilder) SetKey(key string)
*RouterConfigBuilder {
}
func (rcb *RouterConfigBuilder) SetForce(force bool) *RouterConfigBuilder {
- rcb.routerConfig.Force = force
+ rcb.routerConfig.Force = &force
return rcb
}
func (rcb *RouterConfigBuilder) SetRuntime(runtime bool) *RouterConfigBuilder {
- rcb.routerConfig.Runtime = runtime
+ rcb.routerConfig.Runtime = &runtime
return rcb
}
func (rcb *RouterConfigBuilder) SetEnabled(enabled bool) *RouterConfigBuilder {
- rcb.routerConfig.Enabled = enabled
+ rcb.routerConfig.Enabled = &enabled
return rcb
}
func (rcb *RouterConfigBuilder) SetValid(valid bool) *RouterConfigBuilder {
- rcb.routerConfig.Valid = valid
+ rcb.routerConfig.Valid = &valid
return rcb
}
diff --git a/config/tracing_config.go b/config/tracing_config.go
index 9807aff31..b79aef6cc 100644
--- a/config/tracing_config.go
+++ b/config/tracing_config.go
@@ -30,7 +30,7 @@ type TracingConfig struct {
Name string `default:"jaeger" yaml:"name" json:"name,omitempty"
property:"name"` // jaeger or zipkin(todo)
ServiceName string `yaml:"serviceName" json:"serviceName,omitempty"
property:"serviceName"`
Address string `yaml:"address" json:"address,omitempty"
property:"address"`
- UseAgent bool `default:"false" yaml:"use-agent"
json:"use-agent,omitempty" property:"use-agent"`
+ UseAgent *bool `default:"false" yaml:"use-agent"
json:"use-agent,omitempty" property:"use-agent"`
}
// Prefix dubbo.router
diff --git a/config/tracing_config_test.go b/config/tracing_config_test.go
index d21f3d1dd..0a04ea315 100644
--- a/config/tracing_config_test.go
+++ b/config/tracing_config_test.go
@@ -36,5 +36,5 @@ func TestTracingConfig(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, tracing.Prefix(), constant.TracingConfigPrefix)
assert.Equal(t, tracing.Name, "jaeger")
- assert.Equal(t, tracing.UseAgent, false)
+ assert.Equal(t, *tracing.UseAgent, false)
}
diff --git a/protocol/dubbo3/dubbo3_invoker.go
b/protocol/dubbo3/dubbo3_invoker.go
index 29f2af03f..ad84bc33b 100644
--- a/protocol/dubbo3/dubbo3_invoker.go
+++ b/protocol/dubbo3/dubbo3_invoker.go
@@ -107,7 +107,7 @@ func NewDubboInvoker(url *common.URL) (*DubboInvoker,
error) {
opts = append(opts, triConfig.WithJaegerConfig(
tracingConfig.Address,
tracingConfig.ServiceName,
- tracingConfig.UseAgent,
+ *tracingConfig.UseAgent,
))
} else {
logger.Warnf("unsupported tracing name %s, now
triple only support jaeger", tracingConfig.Name)
diff --git a/protocol/dubbo3/dubbo3_protocol.go
b/protocol/dubbo3/dubbo3_protocol.go
index ea5a9ece8..dc2fde4c3 100644
--- a/protocol/dubbo3/dubbo3_protocol.go
+++ b/protocol/dubbo3/dubbo3_protocol.go
@@ -234,7 +234,7 @@ func (dp *DubboProtocol) openServer(url *common.URL,
tripleCodecType tripleConst
opts = append(opts, triConfig.WithJaegerConfig(
tracingConfig.Address,
tracingConfig.ServiceName,
- tracingConfig.UseAgent,
+ *tracingConfig.UseAgent,
))
default:
logger.Warnf("unsupported tracing name %s, now
triple only support jaeger", tracingConfig.Name)