You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/06/21 13:01:25 UTC

[skywalking] branch master updated: Fix ModuleProvider is repeated loading (#2923)

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 fa7a198  Fix ModuleProvider is repeated loading (#2923)
fa7a198 is described below

commit fa7a1983f9be13280a3d5842a6b99d6b5c43563a
Author: daming <zt...@foxmail.com>
AuthorDate: Fri Jun 21 21:01:20 2019 +0800

    Fix ModuleProvider is repeated loading (#2923)
---
 .../apache/skywalking/oap/server/library/module/ModuleDefine.java    | 5 ++---
 .../apache/skywalking/oap/server/library/module/ModuleManager.java   | 4 +++-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java
index 301cc8b..8aaa75c 100644
--- a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java
+++ b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java
@@ -58,9 +58,8 @@ public abstract class ModuleDefine implements ModuleProviderHolder {
      * @param configuration of this module
      * @throws ProviderNotFoundException when even don't find a single one providers.
      */
-    void prepare(ModuleManager moduleManager,
-        ApplicationConfiguration.ModuleConfiguration configuration) throws ProviderNotFoundException, ServiceNotProvidedException, ModuleConfigException, ModuleStartException {
-        ServiceLoader<ModuleProvider> moduleProviderLoader = ServiceLoader.load(ModuleProvider.class);
+    void prepare(ModuleManager moduleManager, ApplicationConfiguration.ModuleConfiguration configuration,
+        ServiceLoader<ModuleProvider> moduleProviderLoader) throws ProviderNotFoundException, ServiceNotProvidedException, ModuleConfigException, ModuleStartException {
         boolean providerExist = false;
         for (ModuleProvider provider : moduleProviderLoader) {
             if (!configuration.has(provider.name())) {
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 90cf325..33b1b00 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
@@ -37,6 +37,8 @@ public class ModuleManager implements ModuleDefineHolder {
         ApplicationConfiguration applicationConfiguration) throws ModuleNotFoundException, ProviderNotFoundException, ServiceNotProvidedException, CycleDependencyException, ModuleConfigException, ModuleStartException {
         String[] moduleNames = applicationConfiguration.moduleList();
         ServiceLoader<ModuleDefine> moduleServiceLoader = ServiceLoader.load(ModuleDefine.class);
+        ServiceLoader<ModuleProvider> moduleProviderLoader = ServiceLoader.load(ModuleProvider.class);
+
         LinkedList<String> moduleList = new LinkedList<>(Arrays.asList(moduleNames));
         for (ModuleDefine module : moduleServiceLoader) {
             for (String moduleName : moduleNames) {
@@ -47,7 +49,7 @@ public class ModuleManager implements ModuleDefineHolder {
                     } catch (InstantiationException | IllegalAccessException e) {
                         throw new ModuleNotFoundException(e);
                     }
-                    newInstance.prepare(this, applicationConfiguration.getModuleConfiguration(moduleName));
+                    newInstance.prepare(this, applicationConfiguration.getModuleConfiguration(moduleName), moduleProviderLoader);
                     loadedModules.put(moduleName, newInstance);
                     moduleList.remove(moduleName);
                 }