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]

Reply via email to