Skip to content

Commit 878966d

Browse files
committed
fix(extension): migrate discovery selector logger and otel registries
Fixes: #3247
1 parent 3fbcad7 commit 878966d

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

common/extension/logger.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ import (
2626
"dubbo.apache.org/dubbo-go/v3/logger"
2727
)
2828

29-
var logs = make(map[string]func(config *common.URL) (logger.Logger, error))
29+
var logs = NewRegistry[func(config *common.URL) (logger.Logger, error)]("logger")
3030

3131
func SetLogger(driver string, log func(config *common.URL) (logger.Logger, error)) {
32-
logs[driver] = log
32+
logs.Register(driver, log)
3333
}
3434

3535
func GetLogger(driver string, config *common.URL) (logger.Logger, error) {
36-
if logs[driver] != nil {
37-
return logs[driver](config)
36+
if logCreator, ok := logs.Get(driver); ok {
37+
return logCreator(config)
3838
} else {
3939
return nil, errors.Errorf("logger for %s does not exist. "+
4040
"please make sure that you have imported the package "+

common/extension/otel_trace.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ import (
2929
"dubbo.apache.org/dubbo-go/v3/otel/trace"
3030
)
3131

32-
var traceExporterMap = make(map[string]func(config *trace.ExporterConfig) (trace.Exporter, error), 4)
32+
var traceExporterMap = NewRegistry[func(config *trace.ExporterConfig) (trace.Exporter, error)]("trace exporter")
3333

3434
func SetTraceExporter(name string, createFunc func(config *trace.ExporterConfig) (trace.Exporter, error)) {
35-
traceExporterMap[name] = createFunc
35+
traceExporterMap.Register(name, createFunc)
3636
}
3737

3838
func GetTraceExporter(name string, config *trace.ExporterConfig) (trace.Exporter, error) {
39-
createFunc, ok := traceExporterMap[name]
39+
createFunc, ok := traceExporterMap.Get(name)
4040
if !ok {
4141
panic("Cannot find the trace provider with name " + name)
4242
}
@@ -45,7 +45,7 @@ func GetTraceExporter(name string, config *trace.ExporterConfig) (trace.Exporter
4545

4646
func GetTraceShutdownCallback() func() {
4747
return func() {
48-
for name, createFunc := range traceExporterMap {
48+
for name, createFunc := range traceExporterMap.Snapshot() {
4949
if exporter, err := createFunc(nil); err == nil {
5050
if err := exporter.GetTracerProvider().Shutdown(context.Background()); err != nil {
5151
logger.Errorf("Graceful shutdown --- Failed to shutdown trace provider %s, error: %s", name, err.Error())

common/extension/service_discovery.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ import (
2727
"dubbo.apache.org/dubbo-go/v3/registry"
2828
)
2929

30-
var discoveryCreatorMap = make(map[string]func(url *common.URL) (registry.ServiceDiscovery, error), 4)
30+
var discoveryCreatorMap = NewRegistry[func(url *common.URL) (registry.ServiceDiscovery, error)]("service discovery")
3131

3232
// SetServiceDiscovery will store the @creator and @name
3333
// protocol indicate the implementation, like nacos
3434
// the name like nacos-1...
3535
func SetServiceDiscovery(protocol string, creator func(url *common.URL) (registry.ServiceDiscovery, error)) {
36-
discoveryCreatorMap[protocol] = creator
36+
discoveryCreatorMap.Register(protocol, creator)
3737
}
3838

3939
// GetServiceDiscovery will return the registry.ServiceDiscovery
@@ -42,7 +42,7 @@ func SetServiceDiscovery(protocol string, creator func(url *common.URL) (registr
4242
// if not found, or initialize instance failed, it will return error.
4343
func GetServiceDiscovery(url *common.URL) (registry.ServiceDiscovery, error) {
4444
protocol := url.GetParam(constant.RegistryKey, "")
45-
creator, ok := discoveryCreatorMap[protocol]
45+
creator, ok := discoveryCreatorMap.Get(protocol)
4646
if !ok {
4747
return nil, perrors.New("Could not find the service discovery with discovery protocol: " + protocol)
4848
}

common/extension/service_instance_selector_factory.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ import (
2525
"dubbo.apache.org/dubbo-go/v3/registry/servicediscovery/instance"
2626
)
2727

28-
var serviceInstanceSelectorMappings = make(map[string]func() instance.ServiceInstanceSelector, 2)
28+
var serviceInstanceSelectorMappings = NewRegistry[func() instance.ServiceInstanceSelector]("service instance selector")
2929

3030
// SetServiceInstanceSelector registers a factory for ServiceInstanceSelector.
3131
func SetServiceInstanceSelector(name string, f func() instance.ServiceInstanceSelector) {
32-
serviceInstanceSelectorMappings[name] = f
32+
serviceInstanceSelectorMappings.Register(name, f)
3333
}
3434

3535
// GetServiceInstanceSelector will create an instance
3636
// it will panic if selector with the @name not found
3737
func GetServiceInstanceSelector(name string) (instance.ServiceInstanceSelector, error) {
38-
serviceInstanceSelector, ok := serviceInstanceSelectorMappings[name]
38+
serviceInstanceSelector, ok := serviceInstanceSelectorMappings.Get(name)
3939
if !ok {
4040
return nil, perrors.New("Could not find service instance selector with" +
4141
"name:" + name)

0 commit comments

Comments
 (0)