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 481813376d16332f7cda129483f3ecfe0416dfc2..384c17706e04acabca428aca1987814d6196ff1a 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 moduleServiceLoader = ServiceLoader.load(ModuleDefine.class); ServiceLoader moduleProviderLoader = ServiceLoader.load(ModuleProvider.class); - LinkedList moduleList = new LinkedList<>(Arrays.asList(moduleNames)); + HashSet 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);