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

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 169640b  optimize moduleServiceLoader traversal logic (#6537)
169640b is described below

commit 169640bd08e3e31012b87b6a989b1c66377e9341
Author: YyWang <[email protected]>
AuthorDate: Fri Mar 12 16:11:49 2021 +0800

    optimize moduleServiceLoader traversal logic (#6537)
    
    Co-authored-by: 吴晟 Wu Sheng <[email protected]>
---
 .../oap/server/library/module/ModuleManager.java       | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git 
a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java
 
b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java
index 4818133..384c177 100644
--- 
a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java
+++ 
b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java
@@ -20,7 +20,7 @@ package org.apache.skywalking.oap.server.library.module;
 
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.LinkedList;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.ServiceLoader;
 
@@ -40,21 +40,19 @@ public class ModuleManager implements ModuleDefineHolder {
         ServiceLoader<ModuleDefine> moduleServiceLoader = 
ServiceLoader.load(ModuleDefine.class);
         ServiceLoader<ModuleProvider> moduleProviderLoader = 
ServiceLoader.load(ModuleProvider.class);
 
-        LinkedList<String> moduleList = new 
LinkedList<>(Arrays.asList(moduleNames));
+        HashSet<String> moduleSet = new HashSet<>(Arrays.asList(moduleNames));
         for (ModuleDefine module : moduleServiceLoader) {
-            for (String moduleName : moduleNames) {
-                if (moduleName.equals(module.name())) {
-                    module.prepare(this, 
applicationConfiguration.getModuleConfiguration(moduleName), 
moduleProviderLoader);
-                    loadedModules.put(moduleName, module);
-                    moduleList.remove(moduleName);
-                }
+            if (moduleSet.contains(module.name())) {
+                module.prepare(this, 
applicationConfiguration.getModuleConfiguration(module.name()), 
moduleProviderLoader);
+                loadedModules.put(module.name(), module);
+                moduleSet.remove(module.name());
             }
         }
         // Finish prepare stage
         isInPrepareStage = false;
 
-        if (moduleList.size() > 0) {
-            throw new ModuleNotFoundException(moduleList.toString() + " 
missing.");
+        if (moduleSet.size() > 0) {
+            throw new ModuleNotFoundException(moduleSet.toString() + " 
missing.");
         }
 
         BootstrapFlow bootstrapFlow = new BootstrapFlow(loadedModules);

Reply via email to