AlbumenJ commented on a change in pull request #9290:
URL: https://github.com/apache/dubbo/pull/9290#discussion_r762709144



##########
File path: 
dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
##########
@@ -69,4 +92,16 @@
         return last;
     }
 
+    private List<ModuleModel> getModuleModelsFromUrl(URL url) {
+        List<ModuleModel> moduleModels = null;
+        ScopeModel scopeModel = url.getScopeModel();
+        if (scopeModel instanceof ApplicationModel) {
+            moduleModels = ((ApplicationModel) scopeModel).getModuleModels();

Review comment:
       Use `getPubModuleModels()` instead.

##########
File path: 
dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
##########
@@ -36,7 +40,17 @@
     public <T> Invoker<T> buildInvokerChain(final Invoker<T> originalInvoker, 
String key, String group) {
         Invoker<T> last = originalInvoker;
         URL url = originalInvoker.getUrl();
-        List<Filter> filters = ScopeModelUtil.getExtensionLoader(Filter.class, 
url.getScopeModel()).getActivateExtension(url, key, group);
+        List<ModuleModel> moduleModels = getModuleModelsFromUrl(url);
+        List<Filter> filters = new ArrayList<>();
+        if (moduleModels != null && moduleModels.size() != 0) {
+            for (ModuleModel moduleModel : moduleModels) {
+                List<Filter> tempFilters = 
ScopeModelUtil.getExtensionLoader(Filter.class, 
moduleModel).getActivateExtension(url, key, group);
+                filters.addAll(tempFilters);

Review comment:
       Filters need to be sorted and de-duplicated.

##########
File path: 
dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/DefaultFilterChainBuilder.java
##########
@@ -36,7 +40,17 @@
     public <T> Invoker<T> buildInvokerChain(final Invoker<T> originalInvoker, 
String key, String group) {
         Invoker<T> last = originalInvoker;
         URL url = originalInvoker.getUrl();
-        List<Filter> filters = ScopeModelUtil.getExtensionLoader(Filter.class, 
url.getScopeModel()).getActivateExtension(url, key, group);
+        List<ModuleModel> moduleModels = getModuleModelsFromUrl(url);
+        List<Filter> filters = new ArrayList<>();
+        if (moduleModels != null && moduleModels.size() != 0) {

Review comment:
       If moduleModels' size is 1, directly use result to reduce memory 
allocation.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to