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);