This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/main by this push:
new 333cba2d4 fix config_center does not work for new options api (#2616)
333cba2d4 is described below
commit 333cba2d4d49d7fe66d09b8b95accd5eb0969c4c
Author: finalt <[email protected]>
AuthorDate: Sun Mar 10 15:16:30 2024 +0800
fix config_center does not work for new options api (#2616)
fixes #2614
---
compat.go | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
options.go | 1 +
2 files changed, 388 insertions(+)
diff --git a/compat.go b/compat.go
index 29e1962b3..7e1ec6408 100644
--- a/compat.go
+++ b/compat.go
@@ -414,3 +414,390 @@ func compatMetricPrometheusGateway(g
*global.PushgatewayConfig) *config.Pushgate
PushInterval: g.PushInterval,
}
}
+
+func compatInstanceOptions(cr *config.RootConfig, rc *InstanceOptions) {
+ if cr == nil {
+ return
+ }
+ proCompat := make(map[string]*global.ProtocolConfig)
+ for k, v := range cr.Protocols {
+ proCompat[k] = compatGlobalProtocolConfig(v)
+ }
+
+ regCompat := make(map[string]*global.RegistryConfig)
+ for k, v := range cr.Registries {
+ regCompat[k] = compatGlobalRegistryConfig(v)
+ }
+
+ rc.Application = compatGlobalApplicationConfig(cr.Application)
+ rc.Protocols = proCompat
+ rc.Registries = regCompat
+ rc.ConfigCenter = compatGlobalCenterConfig(cr.ConfigCenter)
+ rc.MetadataReport = compatGlobalMetadataReportConfig(cr.MetadataReport)
+ rc.Provider = compatGlobalProviderConfig(cr.Provider)
+ rc.Consumer = compatGlobalConsumerConfig(cr.Consumer)
+ rc.Metrics = compatGlobalMetricConfig(cr.Metrics)
+ rc.Otel = compatGlobalOtelConfig(cr.Otel)
+ rc.Logger = compatGlobalLoggerConfig(cr.Logger)
+ rc.Shutdown = compatGlobalShutdownConfig(cr.Shutdown)
+ rc.EventDispatcherType = cr.EventDispatcherType
+ rc.CacheFile = cr.CacheFile
+ rc.Custom = compatGlobalCustomConfig(cr.Custom)
+ rc.Profiles = compatGlobalProfilesConfig(cr.Profiles)
+ rc.TLSConfig = compatGlobalTLSConfig(cr.TLSConfig)
+}
+
+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,
+ MaxServerSendMsgSize: c.MaxServerSendMsgSize,
+ MaxServerRecvMsgSize: c.MaxServerRecvMsgSize,
+ }
+}
+
+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 compatGlobalApplicationConfig(c *config.ApplicationConfig)
*global.ApplicationConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.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,
+ }
+}
+
+func compatGlobalCenterConfig(c *config.CenterConfig) *global.CenterConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.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 compatGlobalMetadataReportConfig(c *config.MetadataReportConfig)
*global.MetadataReportConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.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 compatGlobalProviderConfig(c *config.ProviderConfig)
*global.ProviderConfig {
+ if c == nil {
+ return nil
+ }
+ services := make(map[string]*global.ServiceConfig)
+ for key, svc := range c.Services {
+ services[key] = compatGlobalServiceConfig(svc)
+ }
+ return &global.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 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,
+ }
+}
+
+func compatGlobalConsumerConfig(c *config.ConsumerConfig)
*global.ConsumerConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.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,
+ }
+}
+
+func compatGlobalMetricConfig(c *config.MetricsConfig) *global.MetricsConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.MetricsConfig{
+ Enable: c.Enable,
+ Port: c.Port,
+ Path: c.Path,
+ Prometheus:
compatGlobalMetricPrometheusConfig(c.Prometheus),
+ Aggregation:
compatGlobalMetricAggregationConfig(c.Aggregation),
+ Protocol: c.Protocol,
+ EnableMetadata: c.EnableMetadata,
+ EnableRegistry: c.EnableRegistry,
+ EnableConfigCenter: c.EnableConfigCenter,
+ }
+}
+
+func compatGlobalMetricPrometheusConfig(c *config.PrometheusConfig)
*global.PrometheusConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.PrometheusConfig{
+ Exporter: compatGlobalMetricPrometheusExporter(c.Exporter),
+ Pushgateway: compatGlobalMetricPrometheusGateway(c.Pushgateway),
+ }
+}
+
+func compatGlobalMetricAggregationConfig(a *config.AggregateConfig)
*global.AggregateConfig {
+ if a == nil {
+ return nil
+ }
+ return &global.AggregateConfig{
+ Enabled: a.Enabled,
+ BucketNum: a.BucketNum,
+ TimeWindowSeconds: a.TimeWindowSeconds,
+ }
+}
+
+func compatGlobalMetricPrometheusExporter(e *config.Exporter) *global.Exporter
{
+ if e == nil {
+ return nil
+ }
+ return &global.Exporter{
+ Enabled: e.Enabled,
+ }
+}
+
+func compatGlobalMetricPrometheusGateway(g *config.PushgatewayConfig)
*global.PushgatewayConfig {
+ if g == nil {
+ return nil
+ }
+ return &global.PushgatewayConfig{
+ Enabled: g.Enabled,
+ BaseUrl: g.BaseUrl,
+ Job: g.Job,
+ Username: g.Username,
+ Password: g.Password,
+ PushInterval: g.PushInterval,
+ }
+}
+
+func compatGlobalOtelConfig(c *config.OtelConfig) *global.OtelConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.OtelConfig{
+ TracingConfig: &global.OtelTraceConfig{
+ Enable: c.TraceConfig.Enable,
+ Exporter: c.TraceConfig.Exporter,
+ Endpoint: c.TraceConfig.Endpoint,
+ Propagator: c.TraceConfig.Propagator,
+ SampleMode: c.TraceConfig.SampleMode,
+ SampleRatio: c.TraceConfig.SampleRatio,
+ },
+ }
+}
+
+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),
+ }
+}
+
+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 compatGlobalShutdownConfig(c *config.ShutdownConfig)
*global.ShutdownConfig {
+ if c == nil {
+ return nil
+ }
+ cfg := &global.ShutdownConfig{
+ Timeout: c.Timeout,
+ StepTimeout: c.StepTimeout,
+ ConsumerUpdateWaitTime: c.ConsumerUpdateWaitTime,
+ RejectRequestHandler: c.RejectRequestHandler,
+ InternalSignal: c.InternalSignal,
+ OfflineRequestWindowTimeout: c.OfflineRequestWindowTimeout,
+ RejectRequest: atomic.Bool{},
+ }
+ cfg.RejectRequest.Store(c.RejectRequest.Load())
+
+ return cfg
+}
+
+func compatGlobalCustomConfig(c *config.CustomConfig) *global.CustomConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.CustomConfig{
+ ConfigMap: c.ConfigMap,
+ }
+}
+
+func compatGlobalProfilesConfig(c *config.ProfilesConfig)
*global.ProfilesConfig {
+ if c == nil {
+ return nil
+ }
+ return &global.ProfilesConfig{
+ Active: c.Active,
+ }
+}
+
+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/options.go b/options.go
index fa3996c74..fb1d27005 100644
--- a/options.go
+++ b/options.go
@@ -90,6 +90,7 @@ func (rc *InstanceOptions) init(opts ...InstanceOption) error
{
log.Infof("[Config Center] Config center doesn't start")
log.Debugf("config center doesn't start because %s", err)
} else {
+ compatInstanceOptions(rcCompat, rc)
if err = rcCompat.Logger.Init(); err != nil { // init logger
using config from config center again
return err
}