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/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push: new 8abb01d fix #1055 and make code more readable (#1057) 8abb01d is described below commit 8abb01dce255ce4ef12a599eb43c5873f92fe851 Author: lican <295198...@qq.com> AuthorDate: Tue Apr 10 16:36:41 2018 +0800 fix #1055 and make code more readable (#1057) --- .../skywalking/apm/agent/SkyWalkingAgent.java | 107 ++++++++++++--------- 1 file changed, 63 insertions(+), 44 deletions(-) diff --git a/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java b/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java index f98a2b8..c224aa5 100644 --- a/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java +++ b/apm-sniffer/apm-agent/src/main/java/org/apache/skywalking/apm/agent/SkyWalkingAgent.java @@ -59,72 +59,91 @@ public class SkyWalkingAgent { pluginFinder = new PluginFinder(new PluginBootstrap().loadPlugins()); - ServiceManager.INSTANCE.boot(); } catch (Exception e) { logger.error(e, "Skywalking agent initialized failure. Shutting down."); return; } + new AgentBuilder.Default() + .type(pluginFinder.buildMatch()) + .transform(new Transformer(pluginFinder)) + .with(new Listener()) + .installOn(instrumentation); + + try { + ServiceManager.INSTANCE.boot(); + } catch (Exception e) { + logger.error(e, "Skywalking agent boot failure."); + } + Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { ServiceManager.INSTANCE.shutdown(); } }, "skywalking service shutdown thread")); + } - new AgentBuilder.Default().type(pluginFinder.buildMatch()).transform(new AgentBuilder.Transformer() { - @Override - public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription typeDescription, - ClassLoader classLoader, JavaModule module) { - List<AbstractClassEnhancePluginDefine> pluginDefines = pluginFinder.find(typeDescription, classLoader); - if (pluginDefines.size() > 0) { - DynamicType.Builder<?> newBuilder = builder; - EnhanceContext context = new EnhanceContext(); - for (AbstractClassEnhancePluginDefine define : pluginDefines) { - DynamicType.Builder<?> possibleNewBuilder = define.define(typeDescription.getTypeName(), newBuilder, classLoader, context); - if (possibleNewBuilder != null) { - newBuilder = possibleNewBuilder; - } - } - if (context.isEnhanced()) { - logger.debug("Finish the prepare stage for {}.", typeDescription.getName()); - } + private static class Transformer implements AgentBuilder.Transformer { + private PluginFinder pluginFinder; - return newBuilder; + Transformer(PluginFinder pluginFinder) { + this.pluginFinder = pluginFinder; + } + + @Override + public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription typeDescription, ClassLoader classLoader, JavaModule module) { + List<AbstractClassEnhancePluginDefine> pluginDefines = pluginFinder.find(typeDescription, classLoader); + if (pluginDefines.size() > 0) { + DynamicType.Builder<?> newBuilder = builder; + EnhanceContext context = new EnhanceContext(); + for (AbstractClassEnhancePluginDefine define : pluginDefines) { + DynamicType.Builder<?> possibleNewBuilder = define.define(typeDescription.getTypeName(), newBuilder, classLoader, context); + if (possibleNewBuilder != null) { + newBuilder = possibleNewBuilder; + } + } + if (context.isEnhanced()) { + logger.debug("Finish the prepare stage for {}.", typeDescription.getName()); } - logger.debug("Matched class {}, but ignore by finding mechanism.", typeDescription.getTypeName()); - return builder; + return newBuilder; } - }).with(new AgentBuilder.Listener() { - @Override - public void onDiscovery(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { - } + logger.debug("Matched class {}, but ignore by finding mechanism.", typeDescription.getTypeName()); + return builder; + } + } - @Override - public void onTransformation(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module, - boolean loaded, DynamicType dynamicType) { - if (logger.isDebugEnable()) { - logger.debug("On Transformation class {}.", typeDescription.getName()); - } + private static class Listener implements AgentBuilder.Listener { + @Override + public void onDiscovery(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { - InstrumentDebuggingClass.INSTANCE.log(typeDescription, dynamicType); + } + + @Override + public void onTransformation(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module, + boolean loaded, DynamicType dynamicType) { + if (logger.isDebugEnable()) { + logger.debug("On Transformation class {}.", typeDescription.getName()); } - @Override - public void onIgnored(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module, - boolean loaded) { + InstrumentDebuggingClass.INSTANCE.log(typeDescription, dynamicType); + } + + @Override + public void onIgnored(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module, + boolean loaded) { - } + } - @Override public void onError(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded, - Throwable throwable) { - logger.error("Enhance class " + typeName + " error.", throwable); - } + @Override + public void onError(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded, + Throwable throwable) { + logger.error("Enhance class " + typeName + " error.", throwable); + } - @Override - public void onComplete(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { - } - }).installOn(instrumentation); + @Override + public void onComplete(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { + } } } -- To stop receiving notification emails like this one, please contact wush...@apache.org.