You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/08/29 02:45:20 UTC

[dubbo] branch 3.0-multi-instances updated (af6e0c5 -> a299172)

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

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


    from af6e0c5  Fix inject default model when scope is parent
     new 3dada2d  Fix inject default model when scope is parent
     new a299172  Compact with url without ScopeModel

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../cluster/filter/DefaultFilterChainBuilder.java  |  5 +++--
 .../rpc/cluster/filter/ProtocolFilterWrapper.java  |  3 ++-
 .../org/apache/dubbo/rpc/model/ScopeModel.java     |  2 +-
 .../org/apache/dubbo/rpc/model/ScopeModelUtil.java | 24 +++++++++++++++++++---
 .../dubbo/metadata/WritableMetadataService.java    |  7 ++++---
 .../registry/client/RegistryClusterIdentifier.java |  3 ++-
 .../registry/client/metadata/MetadataUtils.java    |  3 ++-
 .../registry/integration/RegistryProtocol.java     |  7 ++++---
 .../rpc/protocol/ProtocolListenerWrapper.java      |  5 +++--
 9 files changed, 42 insertions(+), 17 deletions(-)

[dubbo] 02/02: Compact with url without ScopeModel

Posted by al...@apache.org.
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

commit a299172704e92e615db422f18cc7736bfedd5837
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Sun Aug 29 10:45:00 2021 +0800

    Compact with url without ScopeModel
---
 .../rpc/cluster/filter/DefaultFilterChainBuilder.java  |  5 +++--
 .../rpc/cluster/filter/ProtocolFilterWrapper.java      |  3 ++-
 .../java/org/apache/dubbo/rpc/model/ScopeModel.java    |  2 +-
 .../org/apache/dubbo/rpc/model/ScopeModelUtil.java     | 18 ++++++++++++++++++
 .../apache/dubbo/metadata/WritableMetadataService.java |  7 ++++---
 .../registry/client/RegistryClusterIdentifier.java     |  3 ++-
 .../dubbo/registry/client/metadata/MetadataUtils.java  |  3 ++-
 .../dubbo/registry/integration/RegistryProtocol.java   |  7 ++++---
 .../dubbo/rpc/protocol/ProtocolListenerWrapper.java    |  5 +++--
 9 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
index 39706bd..478ad66 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.extension.Activate;
 import org.apache.dubbo.rpc.Filter;
 import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.cluster.ClusterInvoker;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
 import java.util.List;
 
@@ -34,7 +35,7 @@ public class DefaultFilterChainBuilder implements FilterChainBuilder {
     public <T> Invoker<T> buildInvokerChain(final Invoker<T> originalInvoker, String key, String group) {
         Invoker<T> last = originalInvoker;
         URL url = originalInvoker.getUrl();
-        List<Filter> filters = url.getScopeModel().getExtensionLoader(Filter.class).getActivateExtension(url, key, group);
+        List<Filter> filters = ScopeModelUtil.getExtensionLoader(Filter.class, url.getScopeModel()).getActivateExtension(url, key, group);
 
         if (!filters.isEmpty()) {
             for (int i = filters.size() - 1; i >= 0; i--) {
@@ -54,7 +55,7 @@ public class DefaultFilterChainBuilder implements FilterChainBuilder {
     public <T> ClusterInvoker<T> buildClusterInvokerChain(final ClusterInvoker<T> originalInvoker, String key, String group) {
         ClusterInvoker<T> last = originalInvoker;
         URL url = originalInvoker.getUrl();
-        List<ClusterFilter> filters = url.getScopeModel().getExtensionLoader(ClusterFilter.class).getActivateExtension(url, key, group);
+        List<ClusterFilter> filters = ScopeModelUtil.getExtensionLoader(ClusterFilter.class, url.getScopeModel()).getActivateExtension(url, key, group);
 
         if (!filters.isEmpty()) {
             for (int i = filters.size() - 1; i >= 0; i--) {
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
index f954cd7..efbc454 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ProtocolFilterWrapper.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.Protocol;
 import org.apache.dubbo.rpc.ProtocolServer;
 import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
 import java.util.List;
 
@@ -61,7 +62,7 @@ public class ProtocolFilterWrapper implements Protocol {
     }
 
     private <T> FilterChainBuilder getFilterChainBuilder(URL url) {
-        return url.getScopeModel().getExtensionLoader(FilterChainBuilder.class).getDefaultExtension();
+        return ScopeModelUtil.getExtensionLoader(FilterChainBuilder.class, url.getScopeModel()).getDefaultExtension();
     }
 
     @Override
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
index 76751e3..ccd87bf 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModel.java
@@ -37,7 +37,7 @@ public abstract class ScopeModel implements ExtensionAccessor {
         this.parent = parent;
         this.extensionDirector = extensionDirector;
         this.extensionDirector.addExtensionPostProcessor(new ScopeModelAwareExtensionProcessor(this));
-        this.beanFactory = new ScopeBeanFactory(parent!=null?parent.getBeanFactory():null, extensionDirector);
+        this.beanFactory = new ScopeBeanFactory(parent != null ? parent.getBeanFactory() : null, extensionDirector);
     }
 
     @PostConstruct
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
index e59f7cb..e686ef1 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
@@ -16,6 +16,9 @@
  */
 package org.apache.dubbo.rpc.model;
 
+import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.common.extension.SPI;
+
 public class ScopeModelUtil {
 
     public static ModuleModel getModuleModel(ScopeModel scopeModel) {
@@ -56,4 +59,19 @@ public class ScopeModelUtil {
         return null;
     }
 
+    public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type, ScopeModel scopeModel) {
+        if(scopeModel != null) {
+            return scopeModel.getExtensionLoader(type);
+        } else {
+            SPI spi = type.getAnnotation(SPI.class);
+            switch (spi.scope()) {
+                case FRAMEWORK:
+                    return FrameworkModel.defaultModel().getExtensionLoader(type);
+                case APPLICATION:
+                    return ApplicationModel.defaultModel().getExtensionLoader(type);
+                default:
+                    return ApplicationModel.defaultModel().getDefaultModule().getExtensionLoader(type);
+            }
+        }
+    }
 }
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
index 799d3de..5aa199e 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/WritableMetadataService.java
@@ -17,11 +17,12 @@
 package org.apache.dubbo.metadata;
 
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionAccessor;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.common.extension.ExtensionScope;
 import org.apache.dubbo.common.extension.SPI;
 import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
 import java.util.Map;
 import java.util.Set;
@@ -103,7 +104,7 @@ public interface WritableMetadataService extends MetadataService {
      *
      * @return non-null
      */
-    static WritableMetadataService getDefaultExtension(ExtensionAccessor extensionAccessor) {
-        return extensionAccessor.getExtensionLoader(WritableMetadataService.class).getDefaultExtension();
+    static WritableMetadataService getDefaultExtension(ScopeModel scopeModel) {
+        return ScopeModelUtil.getExtensionLoader(WritableMetadataService.class, scopeModel).getDefaultExtension();
     }
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java
index e44a5fd..f6132ea 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/RegistryClusterIdentifier.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.registry.client;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.common.extension.SPI;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
 import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_TYPE_KEY;
 
@@ -30,7 +31,7 @@ public interface RegistryClusterIdentifier {
 
     static RegistryClusterIdentifier getExtension(URL url) {
         ExtensionLoader<RegistryClusterIdentifier> loader
-                = url.getScopeModel().getExtensionLoader(RegistryClusterIdentifier.class);
+                = ScopeModelUtil.getExtensionLoader(RegistryClusterIdentifier.class, url.getScopeModel());
         return loader.getExtension(url.getParameter(REGISTRY_CLUSTER_TYPE_KEY, "default"));
     }
 }
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
index df1a4a7..6bdc3ec 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.Protocol;
 import org.apache.dubbo.rpc.ProxyFactory;
 import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
 import java.util.List;
 import java.util.Map;
@@ -61,7 +62,7 @@ public class MetadataUtils {
         WritableMetadataService.getDefaultExtension(url.getScopeModel()).publishServiceDefinition(url);
         // send to remote
         if (REMOTE_METADATA_STORAGE_TYPE.equalsIgnoreCase(url.getParameter(METADATA_KEY))) {
-            getRemoteMetadataService(url.getScopeModel()).publishServiceDefinition(url);
+            getRemoteMetadataService(ScopeModelUtil.getApplicationModel(url.getScopeModel())).publishServiceDefinition(url);
         }
     }
 
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 0d86281..2bf5cb2 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
@@ -53,6 +53,7 @@ import org.apache.dubbo.rpc.model.FrameworkModel;
 import org.apache.dubbo.rpc.model.ProviderModel;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ScopeModelAware;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 import org.apache.dubbo.rpc.protocol.InvokerWrapper;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
 
@@ -247,7 +248,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
 
     private <T> void notifyExport(ExporterChangeableWrapper<T> exporter) {
         ScopeModel scopeModel = exporter.getRegisterUrl().getScopeModel();
-        List<RegistryProtocolListener> listeners = scopeModel.getExtensionLoader(RegistryProtocolListener.class)
+        List<RegistryProtocolListener> listeners = ScopeModelUtil.getExtensionLoader(RegistryProtocolListener.class, scopeModel)
             .getActivateExtension(exporter.getOriginInvoker().getUrl(), "registry.protocol.listener");
         if (CollectionUtils.isNotEmpty(listeners)) {
             for (RegistryProtocolListener listener : listeners) {
@@ -373,7 +374,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
      * @return
      */
     protected Registry getRegistry(final URL registryUrl) {
-        RegistryFactory registryFactory = registryUrl.getScopeModel().getAdaptiveExtension(RegistryFactory.class);
+        RegistryFactory registryFactory = ScopeModelUtil.getExtensionLoader(RegistryFactory.class, registryUrl.getScopeModel()).getAdaptiveExtension();
         return registryFactory.getRegistry(registryUrl);
     }
 
@@ -550,7 +551,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
     }
 
     protected List<RegistryProtocolListener> findRegistryProtocolListeners(URL url) {
-        return url.getScopeModel().getExtensionLoader(RegistryProtocolListener.class)
+        return ScopeModelUtil.getExtensionLoader(RegistryProtocolListener.class, url.getScopeModel())
             .getActivateExtension(url, "registry.protocol.listener");
     }
 
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java
index 06ecbfc..f60ddd9 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java
@@ -29,6 +29,7 @@ import org.apache.dubbo.rpc.ProtocolServer;
 import org.apache.dubbo.rpc.RpcException;
 import org.apache.dubbo.rpc.listener.ListenerExporterWrapper;
 import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper;
+import org.apache.dubbo.rpc.model.ScopeModelUtil;
 
 import java.util.Collections;
 import java.util.List;
@@ -63,7 +64,7 @@ public class ProtocolListenerWrapper implements Protocol {
             return protocol.export(invoker);
         }
         return new ListenerExporterWrapper<T>(protocol.export(invoker),
-                Collections.unmodifiableList(invoker.getUrl().getScopeModel().getExtensionLoader(ExporterListener.class)
+                Collections.unmodifiableList(ScopeModelUtil.getExtensionLoader(ExporterListener.class, invoker.getUrl().getScopeModel())
                         .getActivateExtension(invoker.getUrl(), EXPORTER_LISTENER_KEY)));
     }
 
@@ -77,7 +78,7 @@ public class ProtocolListenerWrapper implements Protocol {
         if (StringUtils.isEmpty(url.getParameter(REGISTRY_CLUSTER_TYPE_KEY))) {
             invoker = new ListenerInvokerWrapper<>(invoker,
                     Collections.unmodifiableList(
-                        invoker.getUrl().getScopeModel().getExtensionLoader(InvokerListener.class)
+                        ScopeModelUtil.getExtensionLoader(InvokerListener.class, invoker.getUrl().getScopeModel())
                                     .getActivateExtension(url, INVOKER_LISTENER_KEY)));
         }
         return invoker;

[dubbo] 01/02: Fix inject default model when scope is parent

Posted by al...@apache.org.
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

commit 3dada2dca645dadaabd57f34995f7508ceee395f
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Sun Aug 29 10:29:59 2021 +0800

    Fix inject default model when scope is parent
---
 .../src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
index 7b93562..e59f7cb 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ScopeModelUtil.java
@@ -23,7 +23,7 @@ public class ScopeModelUtil {
             return (ModuleModel) scopeModel;
         }
         if (scopeModel == null) {
-            ApplicationModel.defaultModel().getDefaultModule();
+            return ApplicationModel.defaultModel().getDefaultModule();
         }
         return null;
     }
@@ -36,7 +36,7 @@ public class ScopeModelUtil {
             return moduleModel.getApplicationModel();
         }
         if (scopeModel == null) {
-            ApplicationModel.defaultModel();
+            return ApplicationModel.defaultModel();
         }
         return null;
     }
@@ -51,7 +51,7 @@ public class ScopeModelUtil {
             return (FrameworkModel) scopeModel;
         }
         if (scopeModel == null) {
-            FrameworkModel.defaultModel();
+            return FrameworkModel.defaultModel();
         }
         return null;
     }