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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 01e36daca refactor: remove root config compatibility bridge (#3448)
01e36daca is described below

commit 01e36dacadb6ba4009c7ca5c8858a37336f95c77
Author: 翎 <[email protected]>
AuthorDate: Mon Jun 22 12:40:58 2026 +0800

    refactor: remove root config compatibility bridge (#3448)
---
 compat.go                | 794 -----------------------------------------------
 compat_test.go           | 196 ------------
 config/compat_test.go    | 339 --------------------
 dubbo_test.go            |  78 ++---
 instance_options_init.go |   3 +-
 options.go               |   1 -
 6 files changed, 25 insertions(+), 1386 deletions(-)

diff --git a/compat.go b/compat.go
deleted file mode 100644
index f786bd543..000000000
--- a/compat.go
+++ /dev/null
@@ -1,794 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dubbo
-
-import (
-       "dubbo.apache.org/dubbo-go/v3/common"
-       "dubbo.apache.org/dubbo-go/v3/config"
-       "dubbo.apache.org/dubbo-go/v3/global"
-)
-
-func compatRootConfig(c *InstanceOptions) *config.RootConfig {
-       if c == nil {
-               return nil
-       }
-       proCompat := make(map[string]*config.ProtocolConfig)
-       for k, v := range c.Protocols {
-               proCompat[k] = compatProtocolConfig(v)
-       }
-
-       regCompat := make(map[string]*config.RegistryConfig)
-       for k, v := range c.Registries {
-               regCompat[k] = compatRegistryConfig(v)
-       }
-
-       routeCompat := make([]*config.RouterConfig, 0)
-       for _, v := range c.Router {
-               routeCompat = append(routeCompat, compatRouterConfig(v))
-       }
-       tracingCompat := make(map[string]*config.TracingConfig)
-       for k, v := range c.Tracing {
-               if v == nil {
-                       tracingCompat[k] = nil
-                       continue
-               }
-               tracingCompat[k] = &config.TracingConfig{
-                       Name:        v.Name,
-                       ServiceName: v.ServiceName,
-                       Address:     v.Address,
-                       UseAgent:    v.UseAgent,
-               }
-       }
-       return &config.RootConfig{
-               Application:         compatApplicationConfig(c.Application),
-               Protocols:           proCompat,
-               Registries:          regCompat,
-               ConfigCenter:        compatCenterConfig(c.ConfigCenter),
-               MetadataReport:      
compatMetadataReportConfig(c.MetadataReport),
-               Provider:            compatProviderConfig(c.Provider),
-               Consumer:            compatConsumerConfig(c.Consumer),
-               Metrics:             compatMetricConfig(c.Metrics),
-               Tracing:             tracingCompat,
-               Otel:                compatOtelConfig(c.Otel),
-               Logger:              compatLoggerConfig(c.Logger),
-               Shutdown:            compatShutdownConfig(c.Shutdown),
-               Router:              routeCompat,
-               EventDispatcherType: c.EventDispatcherType,
-               CacheFile:           c.CacheFile,
-               Custom:              compatCustomConfig(c.Custom),
-               Profiles:            compatProfilesConfig(c.Profiles),
-               TLSConfig:           compatTLSConfig(c.TLSConfig),
-       }
-}
-
-func compatApplicationConfig(c *global.ApplicationConfig) 
*config.ApplicationConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.ApplicationConfig{
-               Organization:            c.Organization,
-               Name:                    c.Name,
-               Module:                  c.Module,
-               Group:                   c.Group,
-               Version:                 c.Version,
-               Owner:                   c.Owner,
-               Environment:             c.Environment,
-               MetadataType:            c.MetadataType,
-               Tag:                     c.Tag,
-               MetadataServicePort:     c.MetadataServicePort,
-               MetadataServiceProtocol: c.MetadataServiceProtocol,
-       }
-}
-
-func compatProtocolConfig(c *global.ProtocolConfig) *config.ProtocolConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.ProtocolConfig{
-               Name:                 c.Name,
-               Ip:                   c.Ip,
-               Port:                 c.Port,
-               Params:               c.Params,
-               TripleConfig:         compatTripleConfig(c.TripleConfig),
-               MaxServerSendMsgSize: c.MaxServerSendMsgSize,
-               MaxServerRecvMsgSize: c.MaxServerRecvMsgSize,
-       }
-}
-
-// just for compat
-func compatTripleConfig(c *global.TripleConfig) *config.TripleConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.TripleConfig{
-               MaxServerSendMsgSize: c.MaxServerSendMsgSize,
-               MaxServerRecvMsgSize: c.MaxServerRecvMsgSize,
-               Http3:                compatHttp3Config(c.Http3),
-
-               KeepAliveInterval: c.KeepAliveInterval,
-               KeepAliveTimeout:  c.KeepAliveTimeout,
-       }
-}
-
-// just for compat
-func compatHttp3Config(c *global.Http3Config) *config.Http3Config {
-       if c == nil {
-               return nil
-       }
-       return &config.Http3Config{
-               Enable:      c.Enable,
-               Negotiation: c.Negotiation,
-       }
-}
-
-func compatRegistryConfig(c *global.RegistryConfig) *config.RegistryConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.RegistryConfig{
-               Protocol:          c.Protocol,
-               Timeout:           c.Timeout,
-               Group:             c.Group,
-               Namespace:         c.Namespace,
-               TTL:               c.TTL,
-               Address:           c.Address,
-               Username:          c.Username,
-               Password:          c.Password,
-               Simplified:        c.Simplified,
-               Preferred:         c.Preferred,
-               Zone:              c.Zone,
-               Weight:            c.Weight,
-               Params:            c.Params,
-               RegistryType:      c.RegistryType,
-               UseAsMetaReport:   c.UseAsMetaReport,
-               UseAsConfigCenter: c.UseAsConfigCenter,
-       }
-}
-
-func compatCenterConfig(c *global.CenterConfig) *config.CenterConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.CenterConfig{
-               Protocol:      c.Protocol,
-               Address:       c.Address,
-               DataId:        c.DataId,
-               Cluster:       c.Cluster,
-               Group:         c.Group,
-               Username:      c.Username,
-               Password:      c.Password,
-               Namespace:     c.Namespace,
-               AppID:         c.AppID,
-               Timeout:       c.Timeout,
-               Params:        c.Params,
-               FileExtension: c.FileExtension,
-       }
-}
-
-func compatMetadataReportConfig(c *global.MetadataReportConfig) 
*config.MetadataReportConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.MetadataReportConfig{
-               Protocol:  c.Protocol,
-               Address:   c.Address,
-               Username:  c.Username,
-               Password:  c.Password,
-               Timeout:   c.Timeout,
-               Group:     c.Group,
-               Namespace: c.Namespace,
-               Params:    c.Params,
-       }
-}
-
-func compatProviderConfig(c *global.ProviderConfig) *config.ProviderConfig {
-       if c == nil {
-               return nil
-       }
-       services := make(map[string]*config.ServiceConfig)
-       for key, svc := range c.Services {
-               services[key] = compatServiceConfig(svc)
-       }
-       return &config.ProviderConfig{
-               Filter:                 c.Filter,
-               Register:               c.Register,
-               RegistryIDs:            c.RegistryIDs,
-               ProtocolIDs:            c.ProtocolIDs,
-               TracingKey:             c.TracingKey,
-               Services:               services,
-               ProxyFactory:           c.ProxyFactory,
-               FilterConf:             c.FilterConf,
-               ConfigType:             c.ConfigType,
-               AdaptiveService:        c.AdaptiveService,
-               AdaptiveServiceVerbose: c.AdaptiveServiceVerbose,
-       }
-}
-
-func compatServiceConfig(c *global.ServiceConfig) *config.ServiceConfig {
-       if c == nil {
-               return nil
-       }
-       methods := make([]*config.MethodConfig, len(c.Methods))
-       for i, method := range c.Methods {
-               methods[i] = compatMethodConfig(method)
-       }
-       protocols := make(map[string]*config.ProtocolConfig)
-       for key, pro := range c.RCProtocolsMap {
-               protocols[key] = compatProtocolConfig(pro)
-       }
-       registries := make(map[string]*config.RegistryConfig)
-       for key, reg := range c.RCRegistriesMap {
-               registries[key] = compatRegistryConfig(reg)
-       }
-       return &config.ServiceConfig{
-               Filter:                      c.Filter,
-               ProtocolIDs:                 c.ProtocolIDs,
-               Interface:                   c.Interface,
-               RegistryIDs:                 c.RegistryIDs,
-               Cluster:                     c.Cluster,
-               Loadbalance:                 c.Loadbalance,
-               Group:                       c.Group,
-               Version:                     c.Version,
-               Methods:                     methods,
-               Warmup:                      c.Warmup,
-               Retries:                     c.Retries,
-               Serialization:               c.Serialization,
-               Params:                      c.Params,
-               Token:                       c.Token,
-               AccessLog:                   c.AccessLog,
-               TpsLimiter:                  c.TpsLimiter,
-               TpsLimitInterval:            c.TpsLimitInterval,
-               TpsLimitRate:                c.TpsLimitRate,
-               TpsLimitStrategy:            c.TpsLimitStrategy,
-               TpsLimitRejectedHandler:     c.TpsLimitRejectedHandler,
-               ExecuteLimit:                c.ExecuteLimit,
-               ExecuteLimitRejectedHandler: c.ExecuteLimitRejectedHandler,
-               Auth:                        c.Auth,
-               NotRegister:                 c.NotRegister,
-               ParamSign:                   c.ParamSign,
-               Tag:                         c.Tag,
-               TracingKey:                  c.TracingKey,
-               RCProtocolsMap:              protocols,
-               RCRegistriesMap:             registries,
-               ProxyFactoryKey:             c.ProxyFactoryKey,
-       }
-}
-
-func compatMethodConfig(c *global.MethodConfig) *config.MethodConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.MethodConfig{
-               InterfaceId:                 c.InterfaceId,
-               InterfaceName:               c.InterfaceName,
-               Name:                        c.Name,
-               Retries:                     c.Retries,
-               LoadBalance:                 c.LoadBalance,
-               Weight:                      c.Weight,
-               TpsLimitInterval:            c.TpsLimitInterval,
-               TpsLimitRate:                c.TpsLimitRate,
-               TpsLimitStrategy:            c.TpsLimitStrategy,
-               ExecuteLimit:                c.ExecuteLimit,
-               ExecuteLimitRejectedHandler: c.ExecuteLimitRejectedHandler,
-               Sticky:                      c.Sticky,
-               RequestTimeout:              c.RequestTimeout,
-       }
-}
-
-func compatConsumerConfig(c *global.ConsumerConfig) *config.ConsumerConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.ConsumerConfig{
-               Filter:                         c.Filter,
-               RegistryIDs:                    c.RegistryIDs,
-               Protocol:                       c.Protocol,
-               RequestTimeout:                 c.RequestTimeout,
-               ProxyFactory:                   c.ProxyFactory,
-               Check:                          c.Check,
-               AdaptiveService:                c.AdaptiveService,
-               TracingKey:                     c.TracingKey,
-               FilterConf:                     c.FilterConf,
-               MaxWaitTimeForServiceDiscovery: 
c.MaxWaitTimeForServiceDiscovery,
-               MeshEnabled:                    c.MeshEnabled,
-               References:                     compatReferences(c.References),
-       }
-}
-
-func compatReferences(c map[string]*global.ReferenceConfig) 
map[string]*config.ReferenceConfig {
-       refs := make(map[string]*config.ReferenceConfig, len(c))
-       for name, ref := range c {
-               refs[name] = &config.ReferenceConfig{
-                       InterfaceName:        ref.InterfaceName,
-                       Check:                ref.Check,
-                       URL:                  ref.URL,
-                       Filter:               ref.Filter,
-                       Protocol:             ref.Protocol,
-                       RegistryIDs:          ref.RegistryIDs,
-                       Cluster:              ref.Cluster,
-                       Loadbalance:          ref.Loadbalance,
-                       Retries:              ref.Retries,
-                       Group:                ref.Group,
-                       Version:              ref.Version,
-                       Serialization:        ref.Serialization,
-                       ProvidedBy:           ref.ProvidedBy,
-                       MethodsConfig:        compatMethod(ref.MethodsConfig),
-                       ProtocolClientConfig: 
compatProtocolClientConfig(ref.ProtocolClientConfig),
-                       Async:                ref.Async,
-                       Params:               ref.Params,
-                       Generic:              ref.Generic,
-                       Sticky:               ref.Sticky,
-                       RequestTimeout:       ref.RequestTimeout,
-                       ForceTag:             ref.ForceTag,
-                       TracingKey:           ref.TracingKey,
-                       MeshProviderPort:     ref.MeshProviderPort,
-               }
-       }
-       return refs
-}
-
-// TODO: merge compatGlobalMethod() and compatGlobalMethodConfig
-func compatMethod(m []*global.MethodConfig) []*config.MethodConfig {
-       methods := make([]*config.MethodConfig, 0, len(m))
-       for _, method := range m {
-               methods = append(methods, &config.MethodConfig{
-                       InterfaceId:                 method.InterfaceId,
-                       InterfaceName:               method.InterfaceName,
-                       Name:                        method.Name,
-                       Retries:                     method.Retries,
-                       LoadBalance:                 method.LoadBalance,
-                       Weight:                      method.Weight,
-                       TpsLimitInterval:            method.TpsLimitInterval,
-                       TpsLimitRate:                method.TpsLimitRate,
-                       TpsLimitStrategy:            method.TpsLimitStrategy,
-                       ExecuteLimit:                method.ExecuteLimit,
-                       ExecuteLimitRejectedHandler: 
method.ExecuteLimitRejectedHandler,
-                       Sticky:                      method.Sticky,
-                       RequestTimeout:              method.RequestTimeout,
-               })
-       }
-       return methods
-}
-
-// just for compat
-func compatProtocolClientConfig(c *global.ClientProtocolConfig) 
*config.ClientProtocolConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.ClientProtocolConfig{
-               Name:         c.Name,
-               TripleConfig: compatTripleConfig(c.TripleConfig),
-       }
-}
-
-func compatMetricConfig(c *global.MetricsConfig) *config.MetricsConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.MetricsConfig{
-               Enable:             c.Enable,
-               Port:               c.Port,
-               Path:               c.Path,
-               Prometheus:         compatMetricPrometheusConfig(c.Prometheus),
-               Aggregation:        
compatMetricAggregationConfig(c.Aggregation),
-               Protocol:           c.Protocol,
-               EnableMetadata:     c.EnableMetadata,
-               EnableRegistry:     c.EnableRegistry,
-               EnableConfigCenter: c.EnableConfigCenter,
-               Probe:              compatMetricProbeConfig(c.Probe),
-       }
-}
-
-func compatMetricProbeConfig(c *global.ProbeConfig) *config.ProbeConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.ProbeConfig{
-               Enabled:          c.Enabled,
-               Port:             c.Port,
-               LivenessPath:     c.LivenessPath,
-               ReadinessPath:    c.ReadinessPath,
-               StartupPath:      c.StartupPath,
-               UseInternalState: c.UseInternalState,
-       }
-}
-
-func compatOtelConfig(c *global.OtelConfig) *config.OtelConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.OtelConfig{
-               TraceConfig: &config.OtelTraceConfig{
-                       Enable:      c.TracingConfig.Enable,
-                       Exporter:    c.TracingConfig.Exporter,
-                       Endpoint:    c.TracingConfig.Endpoint,
-                       Propagator:  c.TracingConfig.Propagator,
-                       SampleMode:  c.TracingConfig.SampleMode,
-                       SampleRatio: c.TracingConfig.SampleRatio,
-                       Insecure:    c.TracingConfig.Insecure,
-               },
-       }
-}
-
-// compatTraceIntegrationConfig converts global.TraceIntegrationConfig to 
config.TraceIntegrationConfig
-func compatTraceIntegrationConfig(c *global.TraceIntegrationConfig) 
*config.TraceIntegrationConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.TraceIntegrationConfig{
-               Enabled:           c.Enabled,
-               RecordErrorToSpan: c.RecordErrorToSpan,
-       }
-}
-
-func compatLoggerConfig(c *global.LoggerConfig) *config.LoggerConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.LoggerConfig{
-               Driver:           c.Driver,
-               Level:            c.Level,
-               Format:           c.Format,
-               Appender:         c.Appender,
-               File:             compatFile(c.File),
-               TraceIntegration: 
compatTraceIntegrationConfig(c.TraceIntegration),
-       }
-}
-
-func compatFile(c *global.File) *config.File {
-       if c == nil {
-               return nil
-       }
-       return &config.File{
-               Name:       c.Name,
-               MaxSize:    c.MaxSize,
-               MaxBackups: c.MaxBackups,
-               MaxAge:     c.MaxAge,
-               Compress:   c.Compress,
-       }
-}
-
-func compatShutdownConfig(c *global.ShutdownConfig) *config.ShutdownConfig {
-       if c == nil {
-               return nil
-       }
-       return c.Clone()
-}
-
-func compatRouterConfig(c *global.RouterConfig) *config.RouterConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.RouterConfig{
-               Scope:      c.Scope,
-               Key:        c.Key,
-               Force:      c.Force,
-               Runtime:    c.Runtime,
-               Enabled:    c.Enabled,
-               Valid:      c.Valid,
-               Priority:   c.Priority,
-               Conditions: c.Conditions,
-               Tags:       compatTags(c.Tags),
-               ScriptType: c.ScriptType,
-               Script:     c.Script,
-       }
-
-}
-
-func compatTags(c []global.Tag) []config.Tag {
-       if c == nil {
-               return nil
-       }
-       // deep copy
-       tags := make([]config.Tag, len(c))
-
-       for i := range c {
-               tags[i].Name = c[i].Name
-               if c[i].Match != nil {
-                       tags[i].Match = make([]*common.ParamMatch, 
len(c[i].Match))
-                       for j := range c[i].Match {
-                               if c[i].Match[j] != nil {
-                                       pm := *c[i].Match[j]
-                                       tags[i].Match[j] = &pm
-                               }
-                       }
-               }
-
-               if c[i].Addresses != nil {
-                       tags[i].Addresses = make([]string, len(c[i].Addresses))
-                       copy(tags[i].Addresses, c[i].Addresses)
-               }
-       }
-
-       return tags
-}
-
-func compatCustomConfig(c *global.CustomConfig) *config.CustomConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.CustomConfig{
-               ConfigMap: c.ConfigMap,
-       }
-}
-
-func compatProfilesConfig(c *global.ProfilesConfig) *config.ProfilesConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.ProfilesConfig{
-               Active: c.Active,
-       }
-}
-
-func compatMetricAggregationConfig(a *global.AggregateConfig) 
*config.AggregateConfig {
-       if a == nil {
-               return nil
-       }
-       return &config.AggregateConfig{
-               Enabled:           a.Enabled,
-               BucketNum:         a.BucketNum,
-               TimeWindowSeconds: a.TimeWindowSeconds,
-       }
-}
-
-func compatMetricPrometheusConfig(c *global.PrometheusConfig) 
*config.PrometheusConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.PrometheusConfig{
-               Exporter:    compatMetricPrometheusExporter(c.Exporter),
-               Pushgateway: compatMetricPrometheusGateway(c.Pushgateway),
-       }
-}
-
-func compatMetricPrometheusExporter(e *global.Exporter) *config.Exporter {
-       if e == nil {
-               return nil
-       }
-       return &config.Exporter{
-               Enabled: e.Enabled,
-       }
-}
-
-func compatMetricPrometheusGateway(g *global.PushgatewayConfig) 
*config.PushgatewayConfig {
-       if g == nil {
-               return nil
-       }
-       return &config.PushgatewayConfig{
-               Enabled:      g.Enabled,
-               BaseUrl:      g.BaseUrl,
-               Job:          g.Job,
-               Username:     g.Username,
-               Password:     g.Password,
-               PushInterval: g.PushInterval,
-       }
-}
-
-func setCompatRootConfig(rc *config.RootConfig) {
-       config.SetRootConfig(*rc)
-}
-
-func CompatGlobalProtocolConfig(c *config.ProtocolConfig) 
*global.ProtocolConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.ProtocolConfig{
-               Name:                 c.Name,
-               Ip:                   c.Ip,
-               Port:                 c.Port,
-               Params:               c.Params,
-               TripleConfig:         compatGlobalTripleConfig(c.TripleConfig),
-               MaxServerSendMsgSize: c.MaxServerSendMsgSize,
-               MaxServerRecvMsgSize: c.MaxServerRecvMsgSize,
-       }
-}
-
-func CompatGlobalProtocolConfigMap(m map[string]*config.ProtocolConfig) 
map[string]*global.ProtocolConfig {
-       if m == nil {
-               return nil
-       }
-       protocols := make(map[string]*global.ProtocolConfig, len(m))
-       for k, v := range m {
-               protocols[k] = CompatGlobalProtocolConfig(v)
-       }
-       return protocols
-}
-
-// just for compat
-func compatGlobalTripleConfig(c *config.TripleConfig) *global.TripleConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.TripleConfig{
-               KeepAliveInterval: c.KeepAliveInterval,
-               KeepAliveTimeout:  c.KeepAliveTimeout,
-               Http3:             compatGlobalHttp3Config(c.Http3),
-
-               MaxServerSendMsgSize: c.MaxServerSendMsgSize,
-               MaxServerRecvMsgSize: c.MaxServerRecvMsgSize,
-       }
-}
-
-// just for compat
-func compatGlobalHttp3Config(c *config.Http3Config) *global.Http3Config {
-       if c == nil {
-               return nil
-       }
-       return &global.Http3Config{
-               Enable:      c.Enable,
-               Negotiation: c.Negotiation,
-       }
-}
-
-func compatGlobalRegistryConfig(c *config.RegistryConfig) 
*global.RegistryConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.RegistryConfig{
-               Protocol:          c.Protocol,
-               Timeout:           c.Timeout,
-               Group:             c.Group,
-               Namespace:         c.Namespace,
-               TTL:               c.TTL,
-               Address:           c.Address,
-               Username:          c.Username,
-               Password:          c.Password,
-               Simplified:        c.Simplified,
-               Preferred:         c.Preferred,
-               Zone:              c.Zone,
-               Weight:            c.Weight,
-               Params:            c.Params,
-               RegistryType:      c.RegistryType,
-               UseAsMetaReport:   c.UseAsMetaReport,
-               UseAsConfigCenter: c.UseAsConfigCenter,
-       }
-}
-
-func CompatGlobalServiceConfig(c *config.ServiceConfig) *global.ServiceConfig {
-       if c == nil {
-               return nil
-       }
-       methods := make([]*global.MethodConfig, len(c.Methods))
-       for i, method := range c.Methods {
-               methods[i] = compatGlobalMethodConfig(method)
-       }
-       protocols := make(map[string]*global.ProtocolConfig)
-       for key, pro := range c.RCProtocolsMap {
-               protocols[key] = CompatGlobalProtocolConfig(pro)
-       }
-       registries := make(map[string]*global.RegistryConfig)
-       for key, reg := range c.RCRegistriesMap {
-               registries[key] = compatGlobalRegistryConfig(reg)
-       }
-       return &global.ServiceConfig{
-               Filter:                      c.Filter,
-               ProtocolIDs:                 c.ProtocolIDs,
-               Interface:                   c.Interface,
-               RegistryIDs:                 c.RegistryIDs,
-               Cluster:                     c.Cluster,
-               Loadbalance:                 c.Loadbalance,
-               Group:                       c.Group,
-               Version:                     c.Version,
-               Methods:                     methods,
-               Warmup:                      c.Warmup,
-               Retries:                     c.Retries,
-               Serialization:               c.Serialization,
-               Params:                      c.Params,
-               Token:                       c.Token,
-               AccessLog:                   c.AccessLog,
-               TpsLimiter:                  c.TpsLimiter,
-               TpsLimitInterval:            c.TpsLimitInterval,
-               TpsLimitRate:                c.TpsLimitRate,
-               TpsLimitStrategy:            c.TpsLimitStrategy,
-               TpsLimitRejectedHandler:     c.TpsLimitRejectedHandler,
-               ExecuteLimit:                c.ExecuteLimit,
-               ExecuteLimitRejectedHandler: c.ExecuteLimitRejectedHandler,
-               Auth:                        c.Auth,
-               NotRegister:                 c.NotRegister,
-               ParamSign:                   c.ParamSign,
-               Tag:                         c.Tag,
-               TracingKey:                  c.TracingKey,
-               RCProtocolsMap:              protocols,
-               RCRegistriesMap:             registries,
-               ProxyFactoryKey:             c.ProxyFactoryKey,
-       }
-}
-
-func compatGlobalMethodConfig(c *config.MethodConfig) *global.MethodConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.MethodConfig{
-               InterfaceId:                 c.InterfaceId,
-               InterfaceName:               c.InterfaceName,
-               Name:                        c.Name,
-               Retries:                     c.Retries,
-               LoadBalance:                 c.LoadBalance,
-               Weight:                      c.Weight,
-               TpsLimitInterval:            c.TpsLimitInterval,
-               TpsLimitRate:                c.TpsLimitRate,
-               TpsLimitStrategy:            c.TpsLimitStrategy,
-               ExecuteLimit:                c.ExecuteLimit,
-               ExecuteLimitRejectedHandler: c.ExecuteLimitRejectedHandler,
-               Sticky:                      c.Sticky,
-               RequestTimeout:              c.RequestTimeout,
-       }
-}
-
-// compatGlobalTraceIntegrationConfig converts config.TraceIntegrationConfig 
to global.TraceIntegrationConfig
-func compatGlobalTraceIntegrationConfig(c *config.TraceIntegrationConfig) 
*global.TraceIntegrationConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.TraceIntegrationConfig{
-               Enabled:           c.Enabled,
-               RecordErrorToSpan: c.RecordErrorToSpan,
-       }
-}
-
-func compatGlobalLoggerConfig(c *config.LoggerConfig) *global.LoggerConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.LoggerConfig{
-               Driver:           c.Driver,
-               Level:            c.Level,
-               Format:           c.Format,
-               Appender:         c.Appender,
-               File:             compatGlobalFile(c.File),
-               TraceIntegration: 
compatGlobalTraceIntegrationConfig(c.TraceIntegration),
-       }
-}
-
-func compatGlobalFile(c *config.File) *global.File {
-       if c == nil {
-               return nil
-       }
-       return &global.File{
-               Name:       c.Name,
-               MaxSize:    c.MaxSize,
-               MaxBackups: c.MaxBackups,
-               MaxAge:     c.MaxAge,
-               Compress:   c.Compress,
-       }
-}
-
-func compatTLSConfig(c *global.TLSConfig) *config.TLSConfig {
-       if c == nil {
-               return nil
-       }
-       return &config.TLSConfig{
-               CACertFile:    c.CACertFile,
-               TLSCertFile:   c.TLSCertFile,
-               TLSKeyFile:    c.TLSKeyFile,
-               TLSServerName: c.TLSServerName,
-       }
-}
-
-func CompatGlobalTLSConfig(c *config.TLSConfig) *global.TLSConfig {
-       if c == nil {
-               return nil
-       }
-       return &global.TLSConfig{
-               CACertFile:    c.CACertFile,
-               TLSCertFile:   c.TLSCertFile,
-               TLSKeyFile:    c.TLSKeyFile,
-               TLSServerName: c.TLSServerName,
-       }
-}
diff --git a/compat_test.go b/compat_test.go
deleted file mode 100644
index 20aba88a4..000000000
--- a/compat_test.go
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dubbo
-
-import (
-       "testing"
-)
-
-import (
-       "github.com/stretchr/testify/assert"
-)
-
-import (
-       "dubbo.apache.org/dubbo-go/v3/config"
-       "dubbo.apache.org/dubbo-go/v3/global"
-)
-
-// TestCompatLoggerConfigWithTraceIntegration tests the conversion functions 
for LoggerConfig with TraceIntegration
-func TestCompatLoggerConfigWithTraceIntegration(t *testing.T) {
-       t.Run("global_to_config_with_trace_integration", func(t *testing.T) {
-               enabled := true
-               recordError := false
-               globalCfg := &global.LoggerConfig{
-                       Driver:   "zap",
-                       Level:    "info",
-                       Format:   "json",
-                       Appender: "console",
-                       TraceIntegration: &global.TraceIntegrationConfig{
-                               Enabled:           &enabled,
-                               RecordErrorToSpan: &recordError,
-                       },
-               }
-
-               configCfg := compatLoggerConfig(globalCfg)
-
-               assert.NotNil(t, configCfg)
-               assert.Equal(t, globalCfg.Driver, configCfg.Driver)
-               assert.Equal(t, globalCfg.Level, configCfg.Level)
-               assert.Equal(t, globalCfg.Format, configCfg.Format)
-               assert.Equal(t, globalCfg.Appender, configCfg.Appender)
-               assert.NotNil(t, configCfg.TraceIntegration)
-               assert.Equal(t, *globalCfg.TraceIntegration.Enabled, 
*configCfg.TraceIntegration.Enabled)
-               assert.Equal(t, *globalCfg.TraceIntegration.RecordErrorToSpan, 
*configCfg.TraceIntegration.RecordErrorToSpan)
-       })
-
-       t.Run("global_to_config_with_nil_trace_integration", func(t *testing.T) 
{
-               globalCfg := &global.LoggerConfig{
-                       Driver:           "zap",
-                       Level:            "info",
-                       TraceIntegration: nil,
-               }
-
-               configCfg := compatLoggerConfig(globalCfg)
-
-               assert.NotNil(t, configCfg)
-               assert.Nil(t, configCfg.TraceIntegration)
-       })
-
-       t.Run("global_to_config_nil", func(t *testing.T) {
-               var globalCfg *global.LoggerConfig
-               configCfg := compatLoggerConfig(globalCfg)
-               assert.Nil(t, configCfg)
-       })
-
-       t.Run("config_to_global_with_trace_integration", func(t *testing.T) {
-               enabled := true
-               recordError := false
-               configCfg := &config.LoggerConfig{
-                       Driver:   "zap",
-                       Level:    "info",
-                       Format:   "json",
-                       Appender: "console",
-                       TraceIntegration: &config.TraceIntegrationConfig{
-                               Enabled:           &enabled,
-                               RecordErrorToSpan: &recordError,
-                       },
-               }
-
-               globalCfg := compatGlobalLoggerConfig(configCfg)
-
-               assert.NotNil(t, globalCfg)
-               assert.Equal(t, configCfg.Driver, globalCfg.Driver)
-               assert.Equal(t, configCfg.Level, globalCfg.Level)
-               assert.Equal(t, configCfg.Format, globalCfg.Format)
-               assert.Equal(t, configCfg.Appender, globalCfg.Appender)
-               assert.NotNil(t, globalCfg.TraceIntegration)
-               assert.Equal(t, *configCfg.TraceIntegration.Enabled, 
*globalCfg.TraceIntegration.Enabled)
-               assert.Equal(t, *configCfg.TraceIntegration.RecordErrorToSpan, 
*globalCfg.TraceIntegration.RecordErrorToSpan)
-       })
-
-       t.Run("config_to_global_with_nil_trace_integration", func(t *testing.T) 
{
-               configCfg := &config.LoggerConfig{
-                       Driver:           "zap",
-                       Level:            "info",
-                       TraceIntegration: nil,
-               }
-
-               globalCfg := compatGlobalLoggerConfig(configCfg)
-
-               assert.NotNil(t, globalCfg)
-               assert.Nil(t, globalCfg.TraceIntegration)
-       })
-
-       t.Run("config_to_global_nil", func(t *testing.T) {
-               var configCfg *config.LoggerConfig
-               globalCfg := compatGlobalLoggerConfig(configCfg)
-               assert.Nil(t, globalCfg)
-       })
-
-       t.Run("round_trip_conversion", func(t *testing.T) {
-               enabled := true
-               recordError := false
-               originalGlobal := &global.LoggerConfig{
-                       Driver: "zap",
-                       Level:  "debug",
-                       TraceIntegration: &global.TraceIntegrationConfig{
-                               Enabled:           &enabled,
-                               RecordErrorToSpan: &recordError,
-                       },
-               }
-
-               // global -> config
-               intermediateConfig := compatLoggerConfig(originalGlobal)
-               assert.NotNil(t, intermediateConfig.TraceIntegration)
-
-               // config -> global
-               convertedGlobal := compatGlobalLoggerConfig(intermediateConfig)
-               assert.NotNil(t, convertedGlobal.TraceIntegration)
-
-               // Verify values are preserved
-               assert.Equal(t, originalGlobal.Driver, convertedGlobal.Driver)
-               assert.Equal(t, originalGlobal.Level, convertedGlobal.Level)
-               assert.Equal(t, *originalGlobal.TraceIntegration.Enabled, 
*convertedGlobal.TraceIntegration.Enabled)
-               assert.Equal(t, 
*originalGlobal.TraceIntegration.RecordErrorToSpan, 
*convertedGlobal.TraceIntegration.RecordErrorToSpan)
-       })
-}
-
-// TestCompatTraceIntegrationConfig tests the helper conversion functions
-func TestCompatTraceIntegrationConfig(t *testing.T) {
-       t.Run("compatTraceIntegrationConfig_with_values", func(t *testing.T) {
-               enabled := true
-               recordError := false
-               globalCfg := &global.TraceIntegrationConfig{
-                       Enabled:           &enabled,
-                       RecordErrorToSpan: &recordError,
-               }
-
-               configCfg := compatTraceIntegrationConfig(globalCfg)
-
-               assert.NotNil(t, configCfg)
-               assert.Equal(t, *globalCfg.Enabled, *configCfg.Enabled)
-               assert.Equal(t, *globalCfg.RecordErrorToSpan, 
*configCfg.RecordErrorToSpan)
-       })
-
-       t.Run("compatTraceIntegrationConfig_nil", func(t *testing.T) {
-               var globalCfg *global.TraceIntegrationConfig
-               configCfg := compatTraceIntegrationConfig(globalCfg)
-               assert.Nil(t, configCfg)
-       })
-
-       t.Run("compatGlobalTraceIntegrationConfig_with_values", func(t 
*testing.T) {
-               enabled := true
-               recordError := false
-               configCfg := &config.TraceIntegrationConfig{
-                       Enabled:           &enabled,
-                       RecordErrorToSpan: &recordError,
-               }
-
-               globalCfg := compatGlobalTraceIntegrationConfig(configCfg)
-
-               assert.NotNil(t, globalCfg)
-               assert.Equal(t, *configCfg.Enabled, *globalCfg.Enabled)
-               assert.Equal(t, *configCfg.RecordErrorToSpan, 
*globalCfg.RecordErrorToSpan)
-       })
-
-       t.Run("compatGlobalTraceIntegrationConfig_nil", func(t *testing.T) {
-               var configCfg *config.TraceIntegrationConfig
-               globalCfg := compatGlobalTraceIntegrationConfig(configCfg)
-               assert.Nil(t, globalCfg)
-       })
-}
diff --git a/config/compat_test.go b/config/compat_test.go
deleted file mode 100644
index f733af850..000000000
--- a/config/compat_test.go
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package config_test
-
-import (
-       "testing"
-)
-
-import (
-       "github.com/stretchr/testify/assert"
-       "github.com/stretchr/testify/require"
-)
-
-import (
-       dubbo "dubbo.apache.org/dubbo-go/v3"
-       "dubbo.apache.org/dubbo-go/v3/config"
-       "dubbo.apache.org/dubbo-go/v3/global"
-)
-
-const (
-       compatProtoID = "tri-compat"
-       compatRegID   = "nacos-compat"
-       compatSvcID   = "com.example.CompatProviderService"
-       compatRefID   = "com.example.CompatReferenceService"
-)
-
-func TestCompatApp(t *testing.T) {
-       root := compatRoot(t)
-
-       require.NotNil(t, root.Application)
-       assert.Equal(t, "compat-app", root.Application.Name)
-       assert.Equal(t, "compat-group", root.Application.Group)
-       assert.Equal(t, "1.0.0", root.Application.Version)
-       assert.Equal(t, "gray", root.Application.Tag)
-}
-
-func TestCompatProto(t *testing.T) {
-       root := compatRoot(t)
-
-       require.Len(t, root.Protocols, 1)
-       protocolCfg := root.Protocols[compatProtoID]
-       require.NotNil(t, protocolCfg)
-       assert.Equal(t, "tri", protocolCfg.Name)
-       assert.Equal(t, "127.0.0.1", protocolCfg.Ip)
-       assert.Equal(t, "20000", protocolCfg.Port)
-       assert.Equal(t, "8mib", protocolCfg.MaxServerSendMsgSize)
-       assert.Equal(t, "6mib", protocolCfg.MaxServerRecvMsgSize)
-       require.NotNil(t, protocolCfg.TripleConfig)
-       assert.Equal(t, "30s", protocolCfg.TripleConfig.KeepAliveInterval)
-       assert.Equal(t, "10s", protocolCfg.TripleConfig.KeepAliveTimeout)
-       require.NotNil(t, protocolCfg.TripleConfig.Http3)
-       assert.True(t, protocolCfg.TripleConfig.Http3.Enable)
-       assert.False(t, protocolCfg.TripleConfig.Http3.Negotiation)
-}
-
-func TestCompatRegistry(t *testing.T) {
-       root := compatRoot(t)
-
-       require.Len(t, root.Registries, 1)
-       registryCfg := root.Registries[compatRegID]
-       require.NotNil(t, registryCfg)
-       assert.Equal(t, "nacos", registryCfg.Protocol)
-       assert.Equal(t, "127.0.0.1:8848", registryCfg.Address)
-       assert.Equal(t, "compat-ns", registryCfg.Namespace)
-       assert.Equal(t, "true", registryCfg.UseAsConfigCenter)
-}
-
-func TestCompatProvider(t *testing.T) {
-       root := compatRoot(t)
-
-       require.NotNil(t, root.Provider)
-       assert.Equal(t, "echo", root.Provider.Filter)
-       assert.Equal(t, []string{compatRegID}, root.Provider.RegistryIDs)
-       assert.Equal(t, []string{compatProtoID}, root.Provider.ProtocolIDs)
-       assert.Contains(t, root.Provider.Services, compatSvcID)
-       providerSvc := root.Provider.Services[compatSvcID]
-       require.NotNil(t, providerSvc)
-       assert.Equal(t, compatSvcID, providerSvc.Interface)
-       assert.Equal(t, "provider-group", providerSvc.Group)
-       assert.Equal(t, "provider-v1", providerSvc.Version)
-       assert.Equal(t, "failover", providerSvc.Cluster)
-       assert.Equal(t, "random", providerSvc.Loadbalance)
-       require.Len(t, providerSvc.Methods, 1)
-       assert.Equal(t, "SayHello", providerSvc.Methods[0].Name)
-       assert.Equal(t, "2s", providerSvc.Methods[0].RequestTimeout)
-}
-
-func TestCompatConsumer(t *testing.T) {
-       root := compatRoot(t)
-
-       require.NotNil(t, root.Consumer)
-       assert.Equal(t, "cshutdown", root.Consumer.Filter)
-       assert.Equal(t, "tri", root.Consumer.Protocol)
-       assert.Equal(t, "5s", root.Consumer.RequestTimeout)
-       assert.Contains(t, root.Consumer.References, compatRefID)
-       refCfg := root.Consumer.References[compatRefID]
-       require.NotNil(t, refCfg)
-       assert.Equal(t, compatRefID, refCfg.InterfaceName)
-       assert.Equal(t, "tri://127.0.0.1:20000", refCfg.URL)
-       assert.Equal(t, "ref-group", refCfg.Group)
-       assert.Equal(t, "ref-v1", refCfg.Version)
-       assert.Equal(t, "tri", refCfg.Protocol)
-       require.Len(t, refCfg.MethodsConfig, 1)
-       assert.Equal(t, "Query", refCfg.MethodsConfig[0].Name)
-       assert.Equal(t, "1s", refCfg.MethodsConfig[0].RequestTimeout)
-}
-
-func TestCompatMetricsOtel(t *testing.T) {
-       root := compatRoot(t)
-
-       require.NotNil(t, root.Metrics)
-       require.NotNil(t, root.Metrics.Enable)
-       assert.True(t, *root.Metrics.Enable)
-       assert.Equal(t, "prometheus", root.Metrics.Protocol)
-       require.NotNil(t, root.Metrics.Probe)
-       assert.Equal(t, "22333", root.Metrics.Probe.Port)
-
-       require.NotNil(t, root.Otel)
-       require.NotNil(t, root.Otel.TraceConfig)
-       require.NotNil(t, root.Otel.TraceConfig.Enable)
-       assert.False(t, *root.Otel.TraceConfig.Enable)
-       assert.Equal(t, "stdout", root.Otel.TraceConfig.Exporter)
-       assert.Equal(t, "http://127.0.0.1:4318";, root.Otel.TraceConfig.Endpoint)
-}
-
-func TestCompatShutdown(t *testing.T) {
-       root := compatRoot(t)
-
-       require.NotNil(t, root.Shutdown)
-       assert.Equal(t, "60s", root.Shutdown.Timeout)
-       assert.Equal(t, "3s", root.Shutdown.StepTimeout)
-       assert.Equal(t, "2s", root.Shutdown.ConsumerUpdateWaitTime)
-       require.NotNil(t, root.Shutdown.InternalSignal)
-       assert.True(t, *root.Shutdown.InternalSignal)
-}
-
-// TestCompatEmptyCollections verifies nil-tolerant behavior
-// for optional sections and empty collections in compat conversion.
-func TestCompatEmptyCollections(t *testing.T) {
-       _, err := dubbo.NewInstance(func(opts *dubbo.InstanceOptions) {
-               opts.Application.Name = "compat-empty"
-               opts.Protocols = compatProtocols("20001")
-               opts.Registries = map[string]*global.RegistryConfig{}
-               opts.Router = nil
-       })
-       require.NoError(t, err)
-
-       root := config.GetRootConfig()
-       require.NotNil(t, root)
-       assert.NotNil(t, root.Protocols)
-       require.Len(t, root.Protocols, 1)
-       assert.NotNil(t, root.Registries)
-       assert.Empty(t, root.Registries)
-       assert.NotNil(t, root.Router)
-       assert.Empty(t, root.Router)
-}
-
-func compatRoot(t *testing.T, opts ...dubbo.InstanceOption) *config.RootConfig 
{
-       t.Helper()
-
-       allOpts := make([]dubbo.InstanceOption, 0, len(opts)+1)
-       allOpts = append(allOpts, compatFixture())
-       allOpts = append(allOpts, opts...)
-
-       _, err := dubbo.NewInstance(allOpts...)
-       require.NoError(t, err)
-
-       root := config.GetRootConfig()
-       require.NotNil(t, root)
-       return root
-}
-
-func compatFixture() dubbo.InstanceOption {
-       return func(opts *dubbo.InstanceOptions) {
-               opts.Application = compatApplication()
-               opts.Protocols = compatProtocols("20000")
-               opts.Registries = compatRegistries()
-               opts.Provider = compatProvider()
-               opts.Consumer = compatConsumer()
-               opts.Metrics = compatMetrics()
-               opts.Otel = compatOtel()
-               opts.Shutdown = compatShutdown()
-               opts.Router = compatRouter()
-               opts.Custom = compatCustom()
-               opts.Profiles = compatProfiles()
-       }
-}
-
-func compatApplication() *global.ApplicationConfig {
-       return &global.ApplicationConfig{
-               Name:    "compat-app",
-               Group:   "compat-group",
-               Version: "1.0.0",
-               Tag:     "gray",
-       }
-}
-
-func compatProtocols(port string) map[string]*global.ProtocolConfig {
-       return map[string]*global.ProtocolConfig{
-               compatProtoID: {
-                       Name:                 "tri",
-                       Ip:                   "127.0.0.1",
-                       Port:                 port,
-                       MaxServerSendMsgSize: "8mib",
-                       MaxServerRecvMsgSize: "6mib",
-                       TripleConfig: &global.TripleConfig{
-                               KeepAliveInterval: "30s",
-                               KeepAliveTimeout:  "10s",
-                               Http3: &global.Http3Config{
-                                       Enable:      true,
-                                       Negotiation: false,
-                               },
-                       },
-               },
-       }
-}
-
-func compatRegistries() map[string]*global.RegistryConfig {
-       return map[string]*global.RegistryConfig{
-               compatRegID: {
-                       Protocol:          "nacos",
-                       Address:           "127.0.0.1:8848",
-                       Namespace:         "compat-ns",
-                       UseAsConfigCenter: "true",
-               },
-       }
-}
-
-func compatProvider() *global.ProviderConfig {
-       return &global.ProviderConfig{
-               Filter:      "echo",
-               RegistryIDs: []string{compatRegID},
-               ProtocolIDs: []string{compatProtoID},
-               Services: map[string]*global.ServiceConfig{
-                       compatSvcID: {
-                               Interface:   compatSvcID,
-                               Group:       "provider-group",
-                               Version:     "provider-v1",
-                               Cluster:     "failover",
-                               Loadbalance: "random",
-                               Methods: []*global.MethodConfig{
-                                       {
-                                               Name:           "SayHello",
-                                               RequestTimeout: "2s",
-                                       },
-                               },
-                       },
-               },
-       }
-}
-
-func compatConsumer() *global.ConsumerConfig {
-       referenceCheck := true
-       return &global.ConsumerConfig{
-               Filter:         "cshutdown",
-               Protocol:       "tri",
-               RequestTimeout: "5s",
-               Check:          true,
-               References: map[string]*global.ReferenceConfig{
-                       compatRefID: {
-                               InterfaceName: compatRefID,
-                               Check:         &referenceCheck,
-                               URL:           "tri://127.0.0.1:20000",
-                               Protocol:      "tri",
-                               Group:         "ref-group",
-                               Version:       "ref-v1",
-                               MethodsConfig: []*global.MethodConfig{
-                                       {
-                                               Name:           "Query",
-                                               RequestTimeout: "1s",
-                                       },
-                               },
-                       },
-               },
-       }
-}
-
-func compatMetrics() *global.MetricsConfig {
-       metricEnabled := true
-       return &global.MetricsConfig{
-               Enable:   &metricEnabled,
-               Protocol: "prometheus",
-               Probe: &global.ProbeConfig{
-                       Port: "22333",
-               },
-       }
-}
-
-func compatOtel() *global.OtelConfig {
-       traceEnabled := false
-       return &global.OtelConfig{
-               TracingConfig: &global.OtelTraceConfig{
-                       Enable:   &traceEnabled,
-                       Exporter: "stdout",
-                       Endpoint: "http://127.0.0.1:4318";,
-               },
-       }
-}
-
-func compatShutdown() *global.ShutdownConfig {
-       internalSignal := true
-       return &global.ShutdownConfig{
-               Timeout:                "60s",
-               StepTimeout:            "3s",
-               ConsumerUpdateWaitTime: "2s",
-               InternalSignal:         &internalSignal,
-       }
-}
-
-func compatRouter() []*global.RouterConfig {
-       return []*global.RouterConfig{}
-}
-
-func compatCustom() *global.CustomConfig {
-       return &global.CustomConfig{
-               ConfigMap: map[string]any{"k": "v"},
-       }
-}
-
-func compatProfiles() *global.ProfilesConfig {
-       return &global.ProfilesConfig{
-               Active: "test",
-       }
-}
diff --git a/dubbo_test.go b/dubbo_test.go
index 6e4f227d4..3c8e123b0 100644
--- a/dubbo_test.go
+++ b/dubbo_test.go
@@ -32,7 +32,6 @@ import (
        commonCfg "dubbo.apache.org/dubbo-go/v3/common/config"
        "dubbo.apache.org/dubbo-go/v3/common/constant"
        "dubbo.apache.org/dubbo-go/v3/common/extension"
-       legacyconfig "dubbo.apache.org/dubbo-go/v3/config"
        "dubbo.apache.org/dubbo-go/v3/config_center"
        "dubbo.apache.org/dubbo-go/v3/global"
        "dubbo.apache.org/dubbo-go/v3/registry"
@@ -231,12 +230,6 @@ func TestInstanceInitAddsDefaultGlobalProtocolWhenEmpty(t 
*testing.T) {
        assert.Equal(t, constant.TriProtocol, tri.Name)
        assert.Equal(t, constant.DefaultTripleProtocolPort, tri.Port)
        assert.Equal(t, "4mib", tri.MaxServerRecvMsgSize)
-
-       root := legacyconfig.GetRootConfig()
-       require.NotNil(t, root)
-       require.NotNil(t, root.Protocols[constant.TriProtocol])
-       assert.Equal(t, constant.TriProtocol, 
root.Protocols[constant.TriProtocol].Name)
-       assert.Equal(t, constant.DefaultTripleProtocolPort, 
root.Protocols[constant.TriProtocol].Port)
 }
 
 func TestInstanceInitTranslatesGlobalRegistryAddress(t *testing.T) {
@@ -289,10 +282,17 @@ func 
TestInstanceInitRejectsDuplicateGlobalRegistryAddress(t *testing.T) {
        assert.Contains(t, err.Error(), "duplicate registry address")
 }
 
-func TestInstanceInitMirrorsTLSConfigToCompatRootConfig(t *testing.T) {
-       restoreCompatRootConfig(t)
+func TestInstanceInitPropagatesTLSConfig(t *testing.T) {
+       assertTLS := func(t *testing.T, cfg *global.TLSConfig) {
+               t.Helper()
+               require.NotNil(t, cfg)
+               assert.Equal(t, "ca.pem", cfg.CACertFile)
+               assert.Equal(t, "cert.pem", cfg.TLSCertFile)
+               assert.Equal(t, "key.pem", cfg.TLSKeyFile)
+               assert.Equal(t, "dubbo.example", cfg.TLSServerName)
+       }
 
-       _, err := NewInstance(func(opts *InstanceOptions) {
+       ins, err := NewInstance(func(opts *InstanceOptions) {
                opts.TLSConfig = &global.TLSConfig{
                        CACertFile:    "ca.pem",
                        TLSCertFile:   "cert.pem",
@@ -301,17 +301,20 @@ func TestInstanceInitMirrorsTLSConfigToCompatRootConfig(t 
*testing.T) {
                }
        })
        require.NoError(t, err)
+       assertTLS(t, ins.insOpts.TLSConfig)
 
-       root := legacyconfig.GetRootConfig()
-       require.NotNil(t, root)
-       require.NotNil(t, root.TLSConfig)
-       assert.Equal(t, "ca.pem", root.TLSConfig.CACertFile)
-       assert.Equal(t, "cert.pem", root.TLSConfig.TLSCertFile)
-       assert.Equal(t, "key.pem", root.TLSConfig.TLSKeyFile)
-       assert.Equal(t, "dubbo.example", root.TLSConfig.TLSServerName)
+       _, err = ins.NewClient(func(options *client.ClientOptions) {
+               assertTLS(t, options.TLS)
+       })
+       require.NoError(t, err)
+
+       _, err = ins.NewServer(func(options *server.ServerOptions) {
+               assertTLS(t, options.TLS)
+       })
+       require.NoError(t, err)
 }
 
-func TestInstanceInitUsesLegacyMetricsDefaults(t *testing.T) {
+func TestInstanceInitUsesGlobalMetricsDefaults(t *testing.T) {
        enabled := true
        rc := defaultInstanceOptions()
        rc.Metrics = &global.MetricsConfig{Enable: &enabled}
@@ -330,9 +333,7 @@ func TestInstanceInitUsesLegacyMetricsDefaults(t 
*testing.T) {
        assert.True(t, *rc.Metrics.Prometheus.Exporter.Enabled)
 }
 
-func TestInstanceInitPreservesLegacyTracingConfig(t *testing.T) {
-       restoreCompatRootConfig(t)
-
+func TestInstanceInitPreservesGlobalTracingConfig(t *testing.T) {
        ins, err := NewInstance(func(opts *InstanceOptions) {
                opts.Tracing = map[string]*global.TracingConfig{
                        "jaeger": {
@@ -345,7 +346,7 @@ func TestInstanceInitPreservesLegacyTracingConfig(t 
*testing.T) {
        assert.Equal(t, "jaeger", ins.insOpts.Provider.TracingKey)
        assert.Equal(t, "jaeger", ins.insOpts.Consumer.TracingKey)
 
-       tracing := legacyconfig.GetTracingConfig("jaeger")
+       tracing := ins.insOpts.Tracing["jaeger"]
        require.NotNil(t, tracing)
        assert.Equal(t, "jaeger", tracing.Name)
        assert.Equal(t, "127.0.0.1:6831", tracing.Address)
@@ -353,9 +354,7 @@ func TestInstanceInitPreservesLegacyTracingConfig(t 
*testing.T) {
        assert.False(t, *tracing.UseAgent)
 }
 
-func 
TestInstanceProcessAppliesLegacyDynamicUpdatesAndRefreshesCompatRootConfig(t 
*testing.T) {
-       restoreCompatRootConfig(t)
-
+func TestInstanceProcessAppliesDynamicUpdatesToLiveOptions(t *testing.T) {
        ins, err := NewInstance(func(opts *InstanceOptions) {
                opts.Application = &global.ApplicationConfig{
                        Name:    "stable-app",
@@ -402,32 +401,15 @@ dubbo:
        assert.Equal(t, "7s", ins.insOpts.Shutdown.ClosingInvokerExpireTime)
        require.NotNil(t, ins.insOpts.TLSConfig)
        assert.Equal(t, "dubbo.example", ins.insOpts.TLSConfig.TLSServerName)
-
-       root := legacyconfig.GetRootConfig()
-       require.NotNil(t, root)
-       assert.Equal(t, "stable-app", root.Application.Name)
-       require.NotNil(t, root.Registries["zk"])
-       assert.Equal(t, "9s", root.Registries["zk"].Timeout)
-       assert.Equal(t, "11s", root.Consumer.RequestTimeout)
-       require.NotNil(t, root.TLSConfig)
-       assert.Equal(t, "dubbo.example", root.TLSConfig.TLSServerName)
 }
 
 func TestInstanceProcessDoesNotMutateLiveOptionsOnInvalidPayload(t *testing.T) 
{
-       restoreCompatRootConfig(t)
-
        ins, err := NewInstance(WithName("stable-app"))
        require.NoError(t, err)
-       rootBefore := legacyconfig.GetRootConfig()
-       require.NotNil(t, rootBefore)
-       assert.Equal(t, "stable-app", rootBefore.Application.Name)
 
        ins.insOpts.Process(&config_center.ConfigChangeEvent{Value: 123})
 
        assert.Equal(t, "stable-app", ins.insOpts.Application.Name)
-       rootAfter := legacyconfig.GetRootConfig()
-       require.NotNil(t, rootAfter)
-       assert.Equal(t, "stable-app", rootAfter.Application.Name)
 }
 
 func TestSetProviderServiceRegistersByReference(t *testing.T) {
@@ -491,15 +473,3 @@ func resetDynamicConfiguration(t *testing.T) {
                env.SetDynamicConfiguration(original)
        })
 }
-
-func restoreCompatRootConfig(t *testing.T) {
-       t.Helper()
-       original := legacyconfig.GetRootConfig()
-       if original == nil {
-               return
-       }
-       originalValue := *original
-       t.Cleanup(func() {
-               legacyconfig.SetRootConfig(originalValue)
-       })
-}
diff --git a/instance_options_init.go b/instance_options_init.go
index 950a21c2a..dac0987c0 100644
--- a/instance_options_init.go
+++ b/instance_options_init.go
@@ -46,6 +46,7 @@ import (
        "dubbo.apache.org/dubbo-go/v3/global"
        "dubbo.apache.org/dubbo-go/v3/internal"
        dubboLogger "dubbo.apache.org/dubbo-go/v3/logger"
+       _ "dubbo.apache.org/dubbo-go/v3/logger/core/zap"
        "dubbo.apache.org/dubbo-go/v3/metrics"
        metricsConfigCenter "dubbo.apache.org/dubbo-go/v3/metrics/config_center"
        "dubbo.apache.org/dubbo-go/v3/otel/trace"
@@ -719,6 +720,4 @@ func (rc *InstanceOptions) Process(event 
*config_center.ConfigChangeEvent) {
                rc.Consumer.RequestTimeout = update.Consumer.RequestTimeout
                gostLogger.Infof("ConsumerConfig's RequestTimeout was 
dynamically updated, new value:%v", rc.Consumer.RequestTimeout)
        }
-
-       setCompatRootConfig(compatRootConfig(rc))
 }
diff --git a/options.go b/options.go
index b0efaad9a..349f0055a 100644
--- a/options.go
+++ b/options.go
@@ -105,7 +105,6 @@ func (rc *InstanceOptions) init(opts ...InstanceOption) 
error {
        if err := rc.finalizeGlobalOptionsWithRuntimeActivation(true); err != 
nil {
                return err
        }
-       setCompatRootConfig(compatRootConfig(rc))
 
        if err := rc.initMetadataReport(); err != nil {
                return err

Reply via email to