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

albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0-multi-instances by this 
push:
     new e29e19c  Fix Configurator Listener in Singleton mode override issue
e29e19c is described below

commit e29e19cc9196652767bdea3ffce26ed3bc2c843d
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun Aug 29 23:20:40 2021 +0800

    Fix Configurator Listener in Singleton mode override issue
---
 .../apache/dubbo/registry/integration/RegistryProtocol.java    | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index 2b1d8a8..f53096a 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@ -215,7 +215,7 @@ public class RegistryProtocol implements Protocol, 
ScopeModelAware {
         //  subscription information to cover.
         final URL overrideSubscribeUrl = getSubscribedOverrideUrl(providerUrl);
         final OverrideListener overrideSubscribeListener = new 
OverrideListener(overrideSubscribeUrl, originInvoker);
-        overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener);
+        overrideListeners.put(registryUrl, overrideSubscribeListener);
 
         providerUrl = overrideUrlWithConfig(providerUrl, 
overrideSubscribeListener);
         //export invoker
@@ -262,9 +262,7 @@ public class RegistryProtocol implements Protocol, 
ScopeModelAware {
         ProviderConfigurationListener providerConfigurationListener = 
getProviderConfigurationListener(providerUrl);
         providerUrl = providerConfigurationListener.overrideUrl(providerUrl);
 
-        URL finalProviderUrl = providerUrl;
-        ServiceConfigurationListener serviceConfigurationListener = 
applicationModel.getBeanFactory().registerBeanIfAbsent(ServiceConfigurationListener.class,
-            type -> new ServiceConfigurationListener(applicationModel, 
finalProviderUrl, listener));
+        ServiceConfigurationListener serviceConfigurationListener = new 
ServiceConfigurationListener(applicationModel, providerUrl, listener);
         serviceConfigurationListeners.put(providerUrl.getServiceKey(), 
serviceConfigurationListener);
         return serviceConfigurationListener.overrideUrl(providerUrl);
     }
@@ -832,13 +830,13 @@ public class RegistryProtocol implements Protocol, 
ScopeModelAware {
                 logger.warn(t.getMessage(), t);
             }
             try {
-                NotifyListener listener = 
RegistryProtocol.this.overrideListeners.remove(subscribeUrl);
+                NotifyListener listener = 
RegistryProtocol.this.overrideListeners.remove(registerUrl);
                 registry.unsubscribe(subscribeUrl, listener);
                 ApplicationModel applicationModel = 
getApplicationModel(registerUrl.getScopeModel());
                 if 
(applicationModel.getApplicationEnvironment().getConfiguration().convert(Boolean.class,
 ENABLE_CONFIGURATION_LISTEN, true)) {
                     
applicationModel.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()
                         .removeListener(subscribeUrl.getServiceKey() + 
CONFIGURATORS_SUFFIX,
-                            
serviceConfigurationListeners.get(subscribeUrl.getServiceKey()));
+                            
serviceConfigurationListeners.remove(subscribeUrl.getServiceKey()));
                 }
             } catch (Throwable t) {
                 logger.warn(t.getMessage(), t);

Reply via email to