From b1002a98e12cef9fc7eaed4c3da06221168401ba Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 13 Nov 2017 00:07:59 +0800 Subject: [PATCH 1/4] Adjust startup sequence. --- .../skywalking/apm/collector/core/module/BootstrapFlow.java | 4 ++-- .../skywalking/apm/collector/core/module/ModuleAProvider.java | 2 +- .../skywalking/apm/collector/core/module/ModuleBProvider.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java index 351339218..9cd994750 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java @@ -58,9 +58,9 @@ public class BootstrapFlow { } } logger.info("start the provider {} in {} module.", provider.name(), provider.getModuleName()); - provider.start(configuration.getModuleConfiguration(provider.getModuleName()).getProviderConfiguration(provider.name())); - provider.requiredCheck(provider.getModule().services()); + + provider.start(configuration.getModuleConfiguration(provider.getModuleName()).getProviderConfiguration(provider.name())); } } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java index 332af247c..7b69ca52a 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java @@ -34,10 +34,10 @@ public class ModuleAProvider extends ModuleProvider { @Override public void prepare(Properties config) throws ServiceNotProvidedException { this.registerServiceImplementation(BaseModuleA.ServiceABusiness1.class, new ModuleABusiness1Impl()); + this.registerServiceImplementation(BaseModuleA.ServiceABusiness2.class, new ModuleABusiness2Impl()); } @Override public void start(Properties config) throws ServiceNotProvidedException { - this.registerServiceImplementation(BaseModuleA.ServiceABusiness2.class, new ModuleABusiness2Impl()); } @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java index 3b5066340..132959599 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java @@ -34,10 +34,10 @@ public class ModuleBProvider extends ModuleProvider { @Override public void prepare(Properties config) throws ServiceNotProvidedException { this.registerServiceImplementation(BaseModuleB.ServiceBBusiness1.class, new ModuleBBusiness1Impl()); + this.registerServiceImplementation(BaseModuleB.ServiceBBusiness2.class, new ModuleBBusiness2Impl()); } @Override public void start(Properties config) throws ServiceNotProvidedException { - this.registerServiceImplementation(BaseModuleB.ServiceBBusiness2.class, new ModuleBBusiness2Impl()); } @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { From 9dbd4ef683e8be615020c6c9e95d31d34e0e935e Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 13 Nov 2017 00:19:34 +0800 Subject: [PATCH 2/4] Remove ServiceInstrumentation mechanism for further collector agent design. --- .../apm/collector/core/module/ModuleManager.java | 9 --------- .../apm/collector/core/module/ModuleProvider.java | 3 --- .../apm/collector/core/module/ModuleManagerTest.java | 1 - 3 files changed, 13 deletions(-) diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java index 6bf0d4452..b0cad6aee 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java @@ -31,7 +31,6 @@ import java.util.ServiceLoader; */ public class ModuleManager { private Map loadedModules = new HashMap<>(); - private boolean isServiceInstrument = true; /** * Init the given modules @@ -81,12 +80,4 @@ public class ModuleManager { return module; throw new ModuleNotFoundException(moduleName + " missing."); } - - public boolean isServiceInstrument() { - return isServiceInstrument; - } - - public void setServiceInstrument(boolean serviceInstrument) { - isServiceInstrument = serviceInstrument; - } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java index aaa7ed165..d1df2c3c6 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java @@ -95,9 +95,6 @@ public abstract class ModuleProvider { protected final void registerServiceImplementation(Class serviceType, Service service) throws ServiceNotProvidedException { if (serviceType.isInstance(service)) { - if (manager.isServiceInstrument()) { -// service = ServiceInstrumentation.INSTANCE.buildServiceUnderMonitor(module.name(), name(), service); - } this.services.put(serviceType, service); } else { throw new ServiceNotProvidedException(serviceType + " is not implemented by " + service); diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java index 5965e1025..45d767663 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java @@ -48,7 +48,6 @@ public class ModuleManagerTest { configuration.addModule("BaseB").addProviderConfiguration("P-B", null); ModuleManager manager = new ModuleManager(); - manager.setServiceInstrument(true); manager.init(configuration); BaseModuleA.ServiceABusiness1 serviceABusiness1 = manager.find("BaseA").getService(BaseModuleA.ServiceABusiness1.class); From d7a2a198e0b06260633767d5668674df1fefe29c Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 13 Nov 2017 00:35:45 +0800 Subject: [PATCH 3/4] Move instruments into an independency module in collector, named `apm-collector-instrument`. --- apm-collector/apm-collector-core/pom.xml | 7 +-- .../collector/core/module/ModuleProvider.java | 1 - .../core/module/ModuleManagerTest.java | 34 -------------- .../apm-collector-instrument/pom.xml | 44 +++++++++++++++++++ .../instrument/MetricCollector.java | 2 +- .../instrument/ServiceInstrumentation.java | 3 +- .../instrument/ServiceMetricTracing.java | 2 +- .../collector}/instrument/TracedService.java | 7 +-- apm-collector/pom.xml | 3 +- 9 files changed, 53 insertions(+), 50 deletions(-) create mode 100644 apm-collector/apm-collector-instrument/pom.xml rename apm-collector/{apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module => apm-collector-instrument/src/main/java/org/skywalking/apm/collector}/instrument/MetricCollector.java (99%) rename apm-collector/{apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module => apm-collector-instrument/src/main/java/org/skywalking/apm/collector}/instrument/ServiceInstrumentation.java (97%) rename apm-collector/{apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module => apm-collector-instrument/src/main/java/org/skywalking/apm/collector}/instrument/ServiceMetricTracing.java (97%) rename apm-collector/{apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module => apm-collector-instrument/src/main/java/org/skywalking/apm/collector}/instrument/TracedService.java (80%) diff --git a/apm-collector/apm-collector-core/pom.xml b/apm-collector/apm-collector-core/pom.xml index 3ab0bc9dc..9b9a29565 100644 --- a/apm-collector/apm-collector-core/pom.xml +++ b/apm-collector/apm-collector-core/pom.xml @@ -18,10 +18,5 @@ gson 2.8.1 - - net.bytebuddy - byte-buddy - 1.7.8 - - \ No newline at end of file + diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java index d1df2c3c6..b0d01e4ef 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java @@ -21,7 +21,6 @@ package org.skywalking.apm.collector.core.module; import java.util.HashMap; import java.util.Map; import java.util.Properties; -import org.skywalking.apm.collector.core.module.instrument.ServiceInstrumentation; /** * The ModuleProvider is an implementation of a {@link Module}. diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java index 45d767663..8172d59c1 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java @@ -20,7 +20,6 @@ package org.skywalking.apm.collector.core.module; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.collector.core.module.instrument.TracedService; /** * @author wu-sheng @@ -39,37 +38,4 @@ public class ModuleManagerTest { BaseModuleA.ServiceABusiness1 serviceABusiness1 = manager.find("BaseA").provider().getService(BaseModuleA.ServiceABusiness1.class); Assert.assertTrue(serviceABusiness1 != null); } - - @Test - public void testInstrument() throws ServiceNotProvidedException, ModuleNotFoundException, ProviderNotFoundException, DuplicateProviderException { - ApplicationConfiguration configuration = new ApplicationConfiguration(); - configuration.addModule("Test").addProviderConfiguration("TestModule-Provider", null); - configuration.addModule("BaseA").addProviderConfiguration("P-A", null); - configuration.addModule("BaseB").addProviderConfiguration("P-B", null); - - ModuleManager manager = new ModuleManager(); - manager.init(configuration); - - BaseModuleA.ServiceABusiness1 serviceABusiness1 = manager.find("BaseA").getService(BaseModuleA.ServiceABusiness1.class); - - Assert.assertTrue(serviceABusiness1 instanceof TracedService); - -// for (int i = 0; i < 10000; i++) -// serviceABusiness1.print(); -// -// try { -// Thread.sleep(60 * 1000L); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// -// for (int i = 0; i < 10000; i++) -// serviceABusiness1.print(); -// -// try { -// Thread.sleep(120 * 1000L); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } - } } diff --git a/apm-collector/apm-collector-instrument/pom.xml b/apm-collector/apm-collector-instrument/pom.xml new file mode 100644 index 000000000..39817d613 --- /dev/null +++ b/apm-collector/apm-collector-instrument/pom.xml @@ -0,0 +1,44 @@ + + + + + + apm-collector + org.skywalking + 3.2.4-2017 + + 4.0.0 + + apm-collector-instrument + + + + org.skywalking + apm-collector-core + ${project.version} + + + net.bytebuddy + byte-buddy + 1.7.8 + + + diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/MetricCollector.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/MetricCollector.java similarity index 99% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/MetricCollector.java rename to apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/MetricCollector.java index 00c8b1617..cd5d92e4c 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/MetricCollector.java +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/MetricCollector.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.module.instrument; +package org.skywalking.apm.collector.instrument; import java.lang.reflect.Method; import java.util.HashMap; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/ServiceInstrumentation.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java similarity index 97% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/ServiceInstrumentation.java rename to apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java index a41a6232d..5ead66cdb 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/ServiceInstrumentation.java +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java @@ -16,12 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.module.instrument; +package org.skywalking.apm.collector.instrument; import net.bytebuddy.ByteBuddy; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.implementation.MethodDelegation; import net.bytebuddy.matcher.ElementMatcher; +import net.bytebuddy.matcher.ElementMatchers; import org.skywalking.apm.collector.core.module.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/ServiceMetricTracing.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceMetricTracing.java similarity index 97% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/ServiceMetricTracing.java rename to apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceMetricTracing.java index 1f99ffc94..94052a054 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/ServiceMetricTracing.java +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceMetricTracing.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.module.instrument; +package org.skywalking.apm.collector.instrument; import java.lang.reflect.Method; import java.util.concurrent.Callable; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/TracedService.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/TracedService.java similarity index 80% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/TracedService.java rename to apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/TracedService.java index 7cec836ca..2925338c8 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/instrument/TracedService.java +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/TracedService.java @@ -16,13 +16,10 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.module.instrument; - -import org.skywalking.apm.collector.core.module.ModuleManager; +package org.skywalking.apm.collector.instrument; /** - * The TracedService implementation are dynamic class, generated by {@link ServiceInstrumentation}, when - * {@link ModuleManager#isServiceInstrument} is true. + * The TracedService implementation are dynamic class, generated by {@link ServiceInstrumentation}. * * By that, all the services metrics are collected, and report in the certain cycle through console. * diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml index 048731b38..03ee98a81 100644 --- a/apm-collector/pom.xml +++ b/apm-collector/pom.xml @@ -45,6 +45,7 @@ apm-collector-remote apm-collector-stream apm-collector-queue + apm-collector-instrument @@ -83,4 +84,4 @@ - \ No newline at end of file + From e8e4915db04ea9b1e4410fafea6c5800cbf7b0ca Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 13 Nov 2017 00:39:48 +0800 Subject: [PATCH 4/4] Fix a code style issue. --- .../apm/collector/instrument/ServiceInstrumentation.java | 1 - 1 file changed, 1 deletion(-) diff --git a/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java index 5ead66cdb..7589bade5 100644 --- a/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java @@ -22,7 +22,6 @@ import net.bytebuddy.ByteBuddy; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.implementation.MethodDelegation; import net.bytebuddy.matcher.ElementMatcher; -import net.bytebuddy.matcher.ElementMatchers; import org.skywalking.apm.collector.core.module.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory;