From 035d7d919be112eb74f64941522557b7676efe2c Mon Sep 17 00:00:00 2001 From: flycash <mingflycash@gmail.com> Date: Sun, 31 May 2020 15:55:44 +0800 Subject: [PATCH] Fix bug: using EventPublishServiceDiscovery --- config/config_loader.go | 10 ---------- metadata/report/delegate/delegate_report.go | 2 +- .../servicediscovery/service_discovery_registry.go | 8 +++++++- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/config/config_loader.go b/config/config_loader.go index b79c2e824..a4dc62ffb 100644 --- a/config/config_loader.go +++ b/config/config_loader.go @@ -276,16 +276,10 @@ func GetApplicationConfig() *ApplicationConfig { // GetProviderConfig find the provider config // if not found, create new one -// we use double-check to reduce race condition -// In general, it will be locked 0 or 1 time. -// So you don't need to worry about the race condition func GetProviderConfig() ProviderConfig { if providerConfig == nil { logger.Warnf("providerConfig is nil! we will try to create one") - configAccessMutex.Lock() - defer configAccessMutex.Unlock() if providerConfig == nil { - logger.Warnf("creating empty provider config. You should see this log only once.") return ProviderConfig{} } } @@ -299,11 +293,7 @@ func GetProviderConfig() ProviderConfig { // So you don't need to worry about the race condition func GetConsumerConfig() ConsumerConfig { if consumerConfig == nil { - logger.Warnf("consumerConfig is nil! we will try to create one") - configAccessMutex.Lock() - defer configAccessMutex.Unlock() if consumerConfig == nil { - logger.Warnf("creating empty consumer config. You should see this log only once.") return ConsumerConfig{} } } diff --git a/metadata/report/delegate/delegate_report.go b/metadata/report/delegate/delegate_report.go index 4bc781a7f..1ab7e4e7c 100644 --- a/metadata/report/delegate/delegate_report.go +++ b/metadata/report/delegate/delegate_report.go @@ -130,7 +130,7 @@ func NewMetadataReport() (*MetadataReport, error) { scheduler := gocron.NewScheduler(time.UTC) _, err := scheduler.Every(1).Day().Do( func() { - logger.Info("start to publish all metadata in metadata report %s.", url.String()) + logger.Infof("start to publish all metadata in metadata report %s.", url.String()) bmr.allMetadataReportsLock.RLock() bmr.doHandlerMetadataCollection(bmr.allMetadataReports) bmr.allMetadataReportsLock.RUnlock() diff --git a/registry/servicediscovery/service_discovery_registry.go b/registry/servicediscovery/service_discovery_registry.go index 33d22e733..555513a44 100644 --- a/registry/servicediscovery/service_discovery_registry.go +++ b/registry/servicediscovery/service_discovery_registry.go @@ -38,6 +38,7 @@ import ( "github.com/apache/dubbo-go/metadata/service" "github.com/apache/dubbo-go/metadata/service/remote" "github.com/apache/dubbo-go/registry" + registryCommon "github.com/apache/dubbo-go/registry/common" "github.com/apache/dubbo-go/registry/servicediscovery/proxy" "github.com/apache/dubbo-go/registry/servicediscovery/synthesizer" "github.com/apache/dubbo-go/remoting" @@ -113,7 +114,11 @@ func creatServiceDiscovery(url *common.URL) (registry.ServiceDiscovery, error) { if !ok { return nil, perrors.Errorf("The service discovery with name: %s is not found", sdcName) } - return extension.GetServiceDiscovery(sdc.Protocol, sdcName) + originServiceDiscovery, err := extension.GetServiceDiscovery(sdc.Protocol, sdcName) + if err != nil { + return nil, perrors.WithMessage(err, "Create service discovery fialed") + } + return registryCommon.NewEventPublishingServiceDiscovery(originServiceDiscovery), nil } func parseServices(literalServices string) *gxset.HashSet { @@ -155,6 +160,7 @@ func (s *serviceDiscoveryRegistry) Register(url common.URL) error { return nil } ok, err := s.metaDataService.ExportURL(url) + s.metaDataService.PublishServiceDefinition(url) if err != nil { logger.Errorf("The URL[%s] registry catch error:%s!", url.String(), err.Error()) return err -- GitLab