This is an automated email from the ASF dual-hosted git repository.
thunguo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/master by this push:
new 8d8b6f4d refactor: Eliminate global state in remoting config and
improve architecture clarity (#1031)
8d8b6f4d is described below
commit 8d8b6f4db2f8c13e15a2a57933b7a872a91c6776
Author: paddi <[email protected]>
AuthorDate: Sat Apr 25 15:07:11 2026 +0800
refactor: Eliminate global state in remoting config and improve
architecture clarity (#1031)
* refactor: refact remote config
* refactor: refact remote config
* refactor: replace ClientIdentity with SeataConfig in remoting layer
* push v2.1.0 changes logs (#1047)
* fix intergrate test error (#1048)
* fix: modified version to v2 (#1041)
* fix: modified version
* fix: modified version
* feat: remove coverage
* fix: change integrate_test.sh
* chore: 空提交,重新推送分支触发CI/CD
---------
Co-authored-by: FengZhang <[email protected]>
---------
Co-authored-by: FengZhang <[email protected]>
Co-authored-by: TewGuo <[email protected]>
Co-authored-by: lxfeng1997 <[email protected]>
Co-authored-by: Oxidaner <[email protected]>
---
pkg/client/client.go | 7 ++---
pkg/remoting/config/config.go | 22 +++-----------
pkg/remoting/config/config_test.go | 55 ++++++++++++-----------------------
pkg/remoting/getty/getty_init.go | 3 +-
pkg/remoting/getty/listener.go | 7 ++---
pkg/remoting/getty/session_manager.go | 8 +++--
6 files changed, 34 insertions(+), 68 deletions(-)
diff --git a/pkg/client/client.go b/pkg/client/client.go
index 317c12b7..71d4f6e5 100644
--- a/pkg/client/client.go
+++ b/pkg/client/client.go
@@ -66,11 +66,8 @@ func initTmClient(cfg *Config) {
// initRemoting init rpc client
func initRemoting(cfg *Config) {
seataConfig := remoteConfig.SeataConfig{
- ApplicationID: cfg.ApplicationID,
- TxServiceGroup: cfg.TxServiceGroup,
- ServiceVgroupMapping: cfg.ServiceConfig.VgroupMapping,
- ServiceGrouplist: cfg.ServiceConfig.Grouplist,
- LoadBalanceType: cfg.GettyConfig.LoadBalanceType,
+ ApplicationID: cfg.ApplicationID,
+ TxServiceGroup: cfg.TxServiceGroup,
}
getty.InitGetty(&cfg.GettyConfig, &seataConfig)
diff --git a/pkg/remoting/config/config.go b/pkg/remoting/config/config.go
index 37a4f4bf..97dbb30e 100644
--- a/pkg/remoting/config/config.go
+++ b/pkg/remoting/config/config.go
@@ -20,12 +20,8 @@ package config
import (
"flag"
"time"
-
- "seata.apache.org/seata-go/v2/pkg/util/flagext"
)
-var seataConfig *SeataConfig
-
type Config struct {
ReconnectInterval int `yaml:"reconnect-interval"
json:"reconnect-interval" koanf:"reconnect-interval"`
ConnectionNum int `yaml:"connection-num"
json:"connection-num" koanf:"connection-num"`
@@ -75,19 +71,9 @@ func (cfg *TransportConfig) RegisterFlagsWithPrefix(prefix
string, f *flag.FlagS
f.DurationVar(&cfg.RPCTmRequestTimeout,
prefix+".rpc-tm-request-timeout", 30*time.Second, "TM send request timeout.")
}
-// todo refactor config
+// SeataConfig represents the identity of a seata client,
+// including application ID and transaction service group.
type SeataConfig struct {
- ApplicationID string
- TxServiceGroup string
- ServiceVgroupMapping flagext.StringMap
- ServiceGrouplist flagext.StringMap
- LoadBalanceType string
-}
-
-func InitConfig(seataConf *SeataConfig) {
- seataConfig = seataConf
-}
-
-func GetSeataConfig() *SeataConfig {
- return seataConfig
+ ApplicationID string
+ TxServiceGroup string
}
diff --git a/pkg/remoting/config/config_test.go
b/pkg/remoting/config/config_test.go
index 81eb71e3..1df96c11 100644
--- a/pkg/remoting/config/config_test.go
+++ b/pkg/remoting/config/config_test.go
@@ -23,8 +23,6 @@ import (
"time"
"github.com/stretchr/testify/assert"
-
- "seata.apache.org/seata-go/v2/pkg/util/flagext"
)
func TestConfig_RegisterFlagsWithPrefix(t *testing.T) {
@@ -162,63 +160,48 @@ func TestTransportConfig_RegisterFlagsWithPrefix(t
*testing.T) {
}
}
-func TestSeataConfig_InitAndGet(t *testing.T) {
+func TestSeataConfig(t *testing.T) {
tests := []struct {
name string
- initConf *SeataConfig
- expected *SeataConfig
+ config SeataConfig
+ expected SeataConfig
}{
{
- name: "Nil Config",
- initConf: nil,
- expected: nil,
+ name: "Empty Config",
+ config: SeataConfig{},
+ expected: SeataConfig{
+ ApplicationID: "",
+ TxServiceGroup: "",
+ },
},
{
name: "Basic Config",
- initConf: &SeataConfig{
+ config: SeataConfig{
ApplicationID: "test-app",
TxServiceGroup: "test-group",
},
- expected: &SeataConfig{
+ expected: SeataConfig{
ApplicationID: "test-app",
TxServiceGroup: "test-group",
},
},
{
name: "Full Config",
- initConf: &SeataConfig{
- ApplicationID: "app",
- TxServiceGroup: "group",
- ServiceVgroupMapping: flagext.StringMap{"a":
"b"},
- ServiceGrouplist: flagext.StringMap{"x":
"y"},
- LoadBalanceType: "RANDOM",
+ config: SeataConfig{
+ ApplicationID: "seata-go-app",
+ TxServiceGroup: "my_tx_group",
},
- expected: &SeataConfig{
- ApplicationID: "app",
- TxServiceGroup: "group",
- ServiceVgroupMapping: flagext.StringMap{"a":
"b"},
- ServiceGrouplist: flagext.StringMap{"x":
"y"},
- LoadBalanceType: "RANDOM",
+ expected: SeataConfig{
+ ApplicationID: "seata-go-app",
+ TxServiceGroup: "my_tx_group",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- seataConfig = nil
- if tt.initConf != nil {
- InitConfig(tt.initConf)
- }
- got := GetSeataConfig()
- if tt.expected == nil {
- assert.Nil(t, got)
- return
- }
- assert.Equal(t, tt.expected.ApplicationID,
got.ApplicationID)
- assert.Equal(t, tt.expected.TxServiceGroup,
got.TxServiceGroup)
- assert.Equal(t, tt.expected.LoadBalanceType,
got.LoadBalanceType)
- assert.Equal(t, tt.expected.ServiceVgroupMapping,
got.ServiceVgroupMapping)
- assert.Equal(t, tt.expected.ServiceGrouplist,
got.ServiceGrouplist)
+ assert.Equal(t, tt.expected.ApplicationID,
tt.config.ApplicationID)
+ assert.Equal(t, tt.expected.TxServiceGroup,
tt.config.TxServiceGroup)
})
}
}
diff --git a/pkg/remoting/getty/getty_init.go b/pkg/remoting/getty/getty_init.go
index bce038ec..5250779f 100644
--- a/pkg/remoting/getty/getty_init.go
+++ b/pkg/remoting/getty/getty_init.go
@@ -23,7 +23,6 @@ import (
)
func InitGetty(gettyConfig *config.Config, seataConfig *config.SeataConfig) {
- config.InitConfig(seataConfig)
codec.Init()
- initSessionManager(gettyConfig)
+ initSessionManager(gettyConfig, seataConfig)
}
diff --git a/pkg/remoting/getty/listener.go b/pkg/remoting/getty/listener.go
index c843ee44..94b18ff3 100644
--- a/pkg/remoting/getty/listener.go
+++ b/pkg/remoting/getty/listener.go
@@ -27,7 +27,6 @@ import (
"seata.apache.org/seata-go/v2/pkg/constant"
"seata.apache.org/seata-go/v2/pkg/protocol/codec"
"seata.apache.org/seata-go/v2/pkg/protocol/message"
- "seata.apache.org/seata-go/v2/pkg/remoting/config"
"seata.apache.org/seata-go/v2/pkg/remoting/processor"
"seata.apache.org/seata-go/v2/pkg/util/log"
)
@@ -57,12 +56,12 @@ func GetGettyClientHandlerInstance() *gettyClientHandler {
func (g *gettyClientHandler) OnOpen(session getty.Session) error {
log.Infof("Open new getty session ")
sessionManager.registerSession(session)
- conf := config.GetSeataConfig()
+ seataConfig := sessionManager.seataConfig
go func() {
request := message.RegisterTMRequest{AbstractIdentifyRequest:
message.AbstractIdentifyRequest{
Version: constant.SeataVersion,
- ApplicationId: conf.ApplicationID,
- TransactionServiceGroup: conf.TxServiceGroup,
+ ApplicationId: seataConfig.ApplicationID,
+ TransactionServiceGroup: seataConfig.TxServiceGroup,
}}
err := GetGettyRemotingClient().SendAsyncRequest(request)
if err != nil {
diff --git a/pkg/remoting/getty/session_manager.go
b/pkg/remoting/getty/session_manager.go
index 756691e9..4800210c 100644
--- a/pkg/remoting/getty/session_manager.go
+++ b/pkg/remoting/getty/session_manager.go
@@ -55,15 +55,17 @@ type SessionManager struct {
allSessions sync.Map
sessionSize int32
gettyConf *config.Config
+ seataConfig *config.SeataConfig
}
-func initSessionManager(gettyConfig *config.Config) {
+func initSessionManager(gettyConfig *config.Config, seataConfig
*config.SeataConfig) {
if sessionManager == nil {
onceSessionManager.Do(func() {
sessionManager = &SessionManager{
allSessions: sync.Map{},
serverSessions: sync.Map{},
gettyConf: gettyConfig,
+ seataConfig: seataConfig,
}
sessionManager.init()
})
@@ -89,7 +91,7 @@ func (g *SessionManager) init() {
func (g *SessionManager) getAvailServerList() []*discovery.ServiceInstance {
registryService := discovery.GetRegistry()
- instances, err :=
registryService.Lookup(config.GetSeataConfig().TxServiceGroup)
+ instances, err := registryService.Lookup(g.seataConfig.TxServiceGroup)
if err != nil {
return nil
}
@@ -158,7 +160,7 @@ func (g *SessionManager) newSession(session getty.Session)
error {
}
func (g *SessionManager) selectSession(msg interface{}) getty.Session {
- session := loadbalance.Select(config.GetSeataConfig().LoadBalanceType,
&g.allSessions, g.getXid(msg))
+ session := loadbalance.Select(g.gettyConf.LoadBalanceType,
&g.allSessions, g.getXid(msg))
if session != nil {
return session
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]