From 1a36dc80e33286843f060397097b9b51d44019be Mon Sep 17 00:00:00 2001 From: IluckySi Date: Fri, 29 Sep 2017 14:23:57 +0800 Subject: [PATCH 01/13] Support SpyMemcached V2.x --- .../trace/component/ComponentsDefine.java | 11 +- apm-sniffer/apm-agent/pom.xml | 5 + apm-sniffer/apm-sdk-plugin/pom.xml | 1 + .../spymemcached-2.x-plugin/pom.xml | 35 +++++ ...thInetSocketAddressListArgInterceptor.java | 23 ++++ .../v2/MemcachedMethodInterceptor.java | 45 +++++++ .../v2/define/MemcachedInstrumentation.java | 82 ++++++++++++ .../src/main/resources/skywalking-plugin.def | 1 + ...etSocketAddressListArgInterceptorTest.java | 39 ++++++ .../v2/MemcachedMethodInterceptorTest.java | 121 ++++++++++++++++++ 10 files changed, 359 insertions(+), 4 deletions(-) create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptor.java create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/resources/skywalking-plugin.def create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptorTest.java create mode 100644 apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptorTest.java diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java index b37078faa..c635c2d2e 100644 --- a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java @@ -43,8 +43,10 @@ public class ComponentsDefine { public static final OfficialComponent JETTY_CLIENT = new OfficialComponent(18, "JettyClient"); - public static final OfficialComponent JETTY_SERVER = new OfficialComponent(19, "JettyServer"); - + public static final OfficialComponent JETTY_SERVER = new OfficialComponent(19, "JettyServer"); + + public static final OfficialComponent MEMCACHE = new OfficialComponent(20, "Memcache"); + private static ComponentsDefine instance = new ComponentsDefine(); private String[] components; @@ -54,7 +56,7 @@ public class ComponentsDefine { } public ComponentsDefine() { - components = new String[20]; + components = new String[21]; addComponent(TOMCAT); addComponent(HTTPCLIENT); addComponent(DUBBO); @@ -74,6 +76,7 @@ public class ComponentsDefine { addComponent(NUTZ_HTTP); addComponent(JETTY_CLIENT); addComponent(JETTY_SERVER); + addComponent(MEMCACHE); } private void addComponent(OfficialComponent component) { @@ -87,4 +90,4 @@ public class ComponentsDefine { return components[componentId]; } } -} +} \ No newline at end of file diff --git a/apm-sniffer/apm-agent/pom.xml b/apm-sniffer/apm-agent/pom.xml index bd21a6637..4625a689b 100644 --- a/apm-sniffer/apm-agent/pom.xml +++ b/apm-sniffer/apm-agent/pom.xml @@ -125,6 +125,11 @@ apm-jetty-server-9.x-plugin ${project.version} + + org.skywalking + apm-spymemcached-2.x-plugin + ${project.version} + diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index d0f24e820..fe8125371 100644 --- a/apm-sniffer/apm-sdk-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/pom.xml @@ -26,6 +26,7 @@ struts2-2.x-plugin nutz-plugins jetty-plugin + spymemcached-2.x-plugin pom diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml new file mode 100644 index 000000000..c05d2a584 --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + org.skywalking + apm-sdk-plugin + 3.2.2-2017 + + + apm-spymemcached-2.x-plugin + spymemcached-2.x-plugin + http://maven.apache.org + + + UTF-8 + 2.11.1 + + + + + net.spy + spymemcached + ${spymemcached.version} + provided + + + org.apache.logging.log4j + log4j-core + 2.4.1 + test + + + diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptor.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptor.java new file mode 100644 index 000000000..21457bfee --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptor.java @@ -0,0 +1,23 @@ +package org.skywalking.apm.plugin.spymemcached.v2; + +import java.net.InetSocketAddress; +import java.util.List; + +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; + +public class MemcachedConstructorWithInetSocketAddressListArgInterceptor implements InstanceConstructorInterceptor { + + @Override + public void onConstruct(EnhancedInstance objInst, Object[] allArguments) { + StringBuilder memcachConnInfo = new StringBuilder(); + @SuppressWarnings("unchecked") + List inetSocketAddressList = (List)allArguments[1]; + for (InetSocketAddress inetSocketAddress : inetSocketAddressList) { + String host = inetSocketAddress.getAddress().getHostAddress(); + int port = inetSocketAddress.getPort(); + memcachConnInfo.append(host + ":" + port).append(";"); + } + objInst.setSkyWalkingDynamicField(memcachConnInfo.toString()); + } +} \ No newline at end of file diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java new file mode 100644 index 000000000..f760919bf --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java @@ -0,0 +1,45 @@ +package org.skywalking.apm.plugin.spymemcached.v2; + +import java.lang.reflect.Method; + +import org.skywalking.apm.agent.core.context.ContextManager; +import org.skywalking.apm.agent.core.context.tag.Tags; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.SpanLayer; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; +import org.skywalking.apm.network.trace.component.ComponentsDefine; + +public class MemcachedMethodInterceptor implements InstanceMethodsAroundInterceptor { + + private static final String SPY_MEMCACHE = "SpyMemcached/"; + + @Override + public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, + Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { + Object[] arguments = allArguments; + String peer = String.valueOf(objInst.getSkyWalkingDynamicField()); + AbstractSpan span = ContextManager.createExitSpan(SPY_MEMCACHE + method.getName(), peer); + span.setComponent(ComponentsDefine.MEMCACHE); + Tags.DB_TYPE.set(span, ComponentsDefine.MEMCACHE.getName()); + SpanLayer.asDB(span); + if (allArguments.length > 0 && arguments[0] instanceof String) { + Tags.DB_STATEMENT.set(span, method.getName() + " " + arguments[0]); + } + } + + @Override + public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, + Class[] argumentsTypes, Object ret) throws Throwable { + ContextManager.stopSpan(); + return ret; + } + + @Override public void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, + Class[] argumentsTypes, Throwable t) { + AbstractSpan span = ContextManager.activeSpan(); + span.errorOccurred(); + span.log(t); + } +} diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java new file mode 100644 index 000000000..f9b1706cf --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java @@ -0,0 +1,82 @@ +package org.skywalking.apm.plugin.spymemcached.v2.define; + +import static org.skywalking.apm.agent.core.plugin.match.NameMatch.byName; + +import java.util.List; + +import org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; +import org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; +import org.skywalking.apm.agent.core.plugin.match.ClassMatch; + +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; + +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArgument; + +/** + * + * {@link MemcachedInstrumentation} presents that skywalking intercept all constructors and methods of + * {@link net.spy.memcached.MemcachedClient}. + * {@link XMemcachedConstructorWithInetSocketAddressListArgInterceptor} intercepts the constructor with + * argument {@link java.net.InetSocketAddress}. + * + *@author IluckySi + * + */ +public class MemcachedInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { + + private static final String ENHANCE_CLASS = "net.spy.memcached.MemcachedClient"; + private static final String CONSTRUCTOR_WITH_INETSOCKETADDRESS_LIST_ARG_INTERCEPT_CLASS = "org.skywalking.apm.plugin.spymemcached.v2.MemcachedConstructorWithInetSocketAddressListArgInterceptor"; + private static final String METHOD_INTERCEPT_CLASS = "org.skywalking.apm.plugin.spymemcached.v2.MemcachedMethodInterceptor"; + + @Override + public ClassMatch enhanceClass() { + return byName(ENHANCE_CLASS); + } + + @Override + protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { + return new ConstructorInterceptPoint[] { + new ConstructorInterceptPoint() { + @Override + public ElementMatcher getConstructorMatcher() { + return takesArgument(1, List.class); + } + + @Override + public String getConstructorInterceptor() { + return CONSTRUCTOR_WITH_INETSOCKETADDRESS_LIST_ARG_INTERCEPT_CLASS; + } + } + }; + } + + @Override + protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { + return new InstanceMethodsInterceptPoint[] { + new InstanceMethodsInterceptPoint() { + @Override + public ElementMatcher getMethodsMatcher() { + return named("touch").or(named("append")) .or(named("prepend")).or(named("asyncCAS")) + .or(named("cas")) .or(named("add")).or(named("set")).or(named("replace")) + .or(named("asyncGet")).or(named("asyncGets")).or(named("gets")).or(named("getAndTouch")) + .or(named("get")).or(named("asyncGetBulk")) .or(named("asyncGetAndTouch")) + .or(named("getBulk")).or(named("getStats")) .or(named("incr")) + .or(named("decr")).or(named("asyncIncr")) .or(named("asyncDecr")) + .or(named("delete")); + } + + @Override + public String getMethodsInterceptor() { + return METHOD_INTERCEPT_CLASS; + } + + @Override public boolean isOverrideArgs() { + return false; + } + } + }; + } +} diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/resources/skywalking-plugin.def new file mode 100644 index 000000000..f552f1602 --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/resources/skywalking-plugin.def @@ -0,0 +1 @@ +spymemcached-2.x=org.skywalking.apm.plugin.spymemcached.v2.define.MemcachedInstrumentation \ No newline at end of file diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptorTest.java new file mode 100644 index 000000000..0d0ee9560 --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedConstructorWithInetSocketAddressListArgInterceptorTest.java @@ -0,0 +1,39 @@ +package org.skywalking.apm.plugin.spymemcached.v2; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import java.net.InetSocketAddress; +import java.util.ArrayList; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; + +@RunWith(MockitoJUnitRunner.class) +public class MemcachedConstructorWithInetSocketAddressListArgInterceptorTest { + + private MemcachedConstructorWithInetSocketAddressListArgInterceptor interceptor; + + @Mock + private EnhancedInstance enhancedInstance; + + @Before + public void setUp() throws Exception { + interceptor = new MemcachedConstructorWithInetSocketAddressListArgInterceptor(); + } + + @Test + public void onConstructWithInetSocketAddressList() { + List inetSocketAddressList = new ArrayList(); + inetSocketAddressList.add(new InetSocketAddress("127.0.0.1", 11211)); + inetSocketAddressList.add(new InetSocketAddress("127.0.0.2", 11211)); + interceptor.onConstruct(enhancedInstance, new Object[]{null, inetSocketAddressList}); + + verify(enhancedInstance, times(1)).setSkyWalkingDynamicField("127.0.0.1:11211;127.0.0.2:11211;"); + } +} diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptorTest.java new file mode 100644 index 000000000..3ddc3be8c --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/test/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptorTest.java @@ -0,0 +1,121 @@ +package org.skywalking.apm.plugin.spymemcached.v2; + +import static junit.framework.TestCase.assertNotNull; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.when; + +import java.lang.reflect.Method; +import java.util.List; + +import org.hamcrest.CoreMatchers; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; +import org.skywalking.apm.agent.core.context.trace.LogDataEntity; +import org.skywalking.apm.agent.core.context.trace.SpanLayer; +import org.skywalking.apm.agent.core.context.trace.TraceSegment; +import org.skywalking.apm.agent.core.context.util.KeyValuePair; +import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; +import org.skywalking.apm.agent.test.helper.SegmentHelper; +import org.skywalking.apm.agent.test.helper.SpanHelper; +import org.skywalking.apm.agent.test.tools.AgentServiceRule; +import org.skywalking.apm.agent.test.tools.SegmentStorage; +import org.skywalking.apm.agent.test.tools.SegmentStoragePoint; +import org.skywalking.apm.agent.test.tools.TracingSegmentRunner; + +import net.spy.memcached.MemcachedClient; + +@RunWith(PowerMockRunner.class) +@PowerMockRunnerDelegate(TracingSegmentRunner.class) +public class MemcachedMethodInterceptorTest { + + @SegmentStoragePoint + private SegmentStorage segmentStorage; + @Rule + public AgentServiceRule serviceRule = new AgentServiceRule(); + @Mock + private EnhancedInstance enhancedInstance; + private MemcachedMethodInterceptor interceptor; + + private Object[] allArgument; + private Class[] argumentType; + + @Before + public void setUp() throws Exception { + allArgument = new Object[] {"OperationKey", "OperationValue"}; + argumentType = new Class[] {String.class, String.class}; + + interceptor = new MemcachedMethodInterceptor(); + when(enhancedInstance.getSkyWalkingDynamicField()).thenReturn("127.0.0.1:11211"); + } + + @Test + public void testIntercept() throws Throwable { + interceptor.beforeMethod(enhancedInstance, getMockSetMethod(), allArgument, argumentType, null); + interceptor.afterMethod(enhancedInstance, getMockGetMethod(), allArgument, argumentType, null); + + TraceSegment traceSegment = segmentStorage.getTraceSegments().get(0); + List spans = SegmentHelper.getSpans(traceSegment); + assertThat(spans.size(), is(1)); + assertMemcacheSpan(spans.get(0)); + } + + @Test + public void testInterceptWithException() throws Throwable { + interceptor.beforeMethod(enhancedInstance, getMockSetMethod(), allArgument, argumentType, null); + interceptor.handleMethodException(enhancedInstance, getMockSetMethod(), allArgument, argumentType, new RuntimeException()); + interceptor.afterMethod(enhancedInstance, getMockSetMethod(), allArgument, argumentType, null); + + TraceSegment traceSegment = segmentStorage.getTraceSegments().get(0); + List spans = SegmentHelper.getSpans(traceSegment); + assertThat(spans.size(), is(1)); + assertMemcacheSpan(spans.get(0)); + + assertLogData(SpanHelper.getLogs(spans.get(0))); + } + + private void assertLogData(List logDataEntities) { + assertThat(logDataEntities.size(), is(1)); + LogDataEntity logData = logDataEntities.get(0); + Assert.assertThat(logData.getLogs().size(), is(4)); + Assert.assertThat(logData.getLogs().get(0).getValue(), CoreMatchers.is("error")); + Assert.assertThat(logData.getLogs().get(1).getValue(), CoreMatchers.is(RuntimeException.class.getName())); + Assert.assertNull(logData.getLogs().get(2).getValue()); + assertNotNull(logData.getLogs().get(3).getValue()); + } + + private void assertMemcacheSpan(AbstractTracingSpan span) { + assertThat(span.getOperationName(), is("SpyMemcached/set")); + assertThat(span.isExit(), is(true)); + assertThat(SpanHelper.getComponentId(span), is(20)); + List tags = SpanHelper.getTags(span); + assertThat(tags.get(0).getValue(), is("Memcache")); + assertThat(tags.get(1).getValue(), is("set OperationKey")); + assertThat(SpanHelper.getLayer(span), is(SpanLayer.DB)); + } + + private Method getMockSetMethod() { + try { + return MemcachedClient.class.getMethod("set", String.class, int.class, Object.class); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + return null; + } + } + + private Method getMockGetMethod() { + try { + return MemcachedClient.class.getMethod("get", String.class); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + return null; + } + } +} From 2647a906e34c03e01b610be5f4c10185145677b4 Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 29 Sep 2017 09:45:36 +0800 Subject: [PATCH 02/13] =?UTF-8?q?Support=20multi=20plugin=20defines=20targ?= =?UTF-8?q?eting=20the=20same=20class.=20Relate=20to=20#402,=20but=20more?= =?UTF-8?q?=20than=20that.=20e.g.=20Enhance=20a=20class=20in=20the=20certa?= =?UTF-8?q?in=20version=20library,=20but=20we=20need=20multi=20plugins=20t?= =?UTF-8?q?o=20do=20so,=20like=20@clevertension=20=E2=80=99s=20#465?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractClassEnhancePluginDefine.java | 7 ++-- .../apm/agent/core/plugin/EnhanceContext.java | 34 +++++++++++++++++++ .../apm/agent/core/plugin/PluginFinder.java | 18 ++++++---- .../enhance/ClassEnhancePluginDefine.java | 22 ++++++++---- .../skywalking/apm/agent/SkyWalkingAgent.java | 22 ++++++++---- 5 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/EnhanceContext.java diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefine.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefine.java index 87bfae3ed..131ddfb86 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefine.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefine.java @@ -26,7 +26,7 @@ public abstract class AbstractClassEnhancePluginDefine { * @throws PluginException, when set builder failure. */ public DynamicType.Builder define(String transformClassName, - DynamicType.Builder builder, ClassLoader classLoader) throws PluginException { + DynamicType.Builder builder, ClassLoader classLoader, EnhanceContext context) throws PluginException { String interceptorDefineClassName = this.getClass().getName(); if (StringUtil.isEmpty(transformClassName)) { @@ -53,15 +53,16 @@ public abstract class AbstractClassEnhancePluginDefine { /** * find origin class source code for interceptor */ - DynamicType.Builder newClassBuilder = this.enhance(transformClassName, builder, classLoader); + DynamicType.Builder newClassBuilder = this.enhance(transformClassName, builder, classLoader, context); + context.initializationStageCompleted(); logger.debug("enhance class {} by {} completely.", transformClassName, interceptorDefineClassName); return newClassBuilder; } protected abstract DynamicType.Builder enhance(String enhanceOriginClassName, - DynamicType.Builder newClassBuilder, ClassLoader classLoader) throws PluginException; + DynamicType.Builder newClassBuilder, ClassLoader classLoader, EnhanceContext context) throws PluginException; /** * Define the {@link ClassMatch} for filtering class. diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/EnhanceContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/EnhanceContext.java new file mode 100644 index 000000000..e3417c38d --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/EnhanceContext.java @@ -0,0 +1,34 @@ +package org.skywalking.apm.agent.core.plugin; + +/** + * The EnhanceContext represents the context or status for processing a class. + * + * Based on this context, the plugin core {@link org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassEnhancePluginDefine} + * knows how to process the specific steps for every particular plugin. + * + * @author wusheng + */ +public class EnhanceContext { + private boolean isEnhanced = false; + /** + * The object has already been enhanced or extended. + * e.g. added the new field, or implemented the new interface + */ + private boolean objectExtended = false; + + public boolean isEnhanced() { + return isEnhanced; + } + + public void initializationStageCompleted() { + isEnhanced = true; + } + + public boolean isObjectExtended() { + return objectExtended; + } + + public void extendObjectCompleted() { + objectExtended = true; + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/PluginFinder.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/PluginFinder.java index 271b32cee..96e90fee6 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/PluginFinder.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/PluginFinder.java @@ -22,7 +22,7 @@ import static net.bytebuddy.matcher.ElementMatchers.not; * @author wusheng */ public class PluginFinder { - private final Map nameMatchDefine = new HashMap(); + private final Map> nameMatchDefine = new HashMap>(); private final List signatureMatchDefine = new LinkedList(); public PluginFinder(List plugins) { @@ -35,28 +35,34 @@ public class PluginFinder { if (match instanceof NameMatch) { NameMatch nameMatch = (NameMatch)match; - nameMatchDefine.put(nameMatch.getClassName(), plugin); + LinkedList pluginDefines = nameMatchDefine.get(nameMatch.getClassName()); + if (pluginDefines == null) { + pluginDefines = new LinkedList(); + nameMatchDefine.put(nameMatch.getClassName(), pluginDefines); + } + pluginDefines.add(plugin); } else { signatureMatchDefine.add(plugin); } } } - public AbstractClassEnhancePluginDefine find(TypeDescription typeDescription, + public List find(TypeDescription typeDescription, ClassLoader classLoader) { + List matchedPlugins = new LinkedList(); String typeName = typeDescription.getTypeName(); if (nameMatchDefine.containsKey(typeName)) { - return nameMatchDefine.get(typeName); + matchedPlugins.addAll(nameMatchDefine.get(typeName)); } for (AbstractClassEnhancePluginDefine pluginDefine : signatureMatchDefine) { IndirectMatch match = (IndirectMatch)pluginDefine.enhanceClass(); if (match.isMatch(typeDescription)) { - return pluginDefine; + matchedPlugins.add(pluginDefine); } } - return null; + return matchedPlugins; } public ElementMatcher buildMatch() { diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/ClassEnhancePluginDefine.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/ClassEnhancePluginDefine.java index 3dc7075cb..b31e2c3b2 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/ClassEnhancePluginDefine.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/ClassEnhancePluginDefine.java @@ -6,6 +6,7 @@ import net.bytebuddy.implementation.MethodDelegation; import net.bytebuddy.implementation.SuperMethodCall; import net.bytebuddy.implementation.bind.annotation.Morph; import org.skywalking.apm.agent.core.plugin.AbstractClassEnhancePluginDefine; +import org.skywalking.apm.agent.core.plugin.EnhanceContext; import org.skywalking.apm.agent.core.plugin.PluginException; import org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; import org.skywalking.apm.agent.core.plugin.interceptor.EnhanceException; @@ -46,10 +47,11 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi */ @Override protected DynamicType.Builder enhance(String enhanceOriginClassName, - DynamicType.Builder newClassBuilder, ClassLoader classLoader) throws PluginException { + DynamicType.Builder newClassBuilder, ClassLoader classLoader, + EnhanceContext context) throws PluginException { newClassBuilder = this.enhanceClass(enhanceOriginClassName, newClassBuilder, classLoader); - newClassBuilder = this.enhanceInstance(enhanceOriginClassName, newClassBuilder, classLoader); + newClassBuilder = this.enhanceInstance(enhanceOriginClassName, newClassBuilder, classLoader, context); return newClassBuilder; } @@ -62,7 +64,8 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi * @return new byte-buddy's builder for further manipulation. */ private DynamicType.Builder enhanceInstance(String enhanceOriginClassName, - DynamicType.Builder newClassBuilder, ClassLoader classLoader) throws PluginException { + DynamicType.Builder newClassBuilder, ClassLoader classLoader, + EnhanceContext context) throws PluginException { ConstructorInterceptPoint[] constructorInterceptPoints = getConstructorsInterceptPoints(); InstanceMethodsInterceptPoint[] instanceMethodsInterceptPoints = getInstanceMethodsInterceptPoints(); @@ -83,16 +86,21 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi } /** - * alter class source code.
+ * Manipulate class source code.
* * new class need:
* 1.Add field, name {@link #CONTEXT_ATTR_NAME}. * 2.Add a field accessor for this field. * + * And make sure the source codes manipulation only occurs once. + * */ - newClassBuilder = newClassBuilder.defineField(CONTEXT_ATTR_NAME, Object.class, ACC_PRIVATE) - .implement(EnhancedInstance.class) - .intercept(FieldAccessor.ofField(CONTEXT_ATTR_NAME)); + if (!context.isObjectExtended()) { + newClassBuilder = newClassBuilder.defineField(CONTEXT_ATTR_NAME, Object.class, ACC_PRIVATE) + .implement(EnhancedInstance.class) + .intercept(FieldAccessor.ofField(CONTEXT_ATTR_NAME)); + context.extendObjectCompleted(); + } /** * 2. enhance constructors diff --git a/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java b/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java index 1edf9f841..fde12af83 100644 --- a/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java +++ b/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java @@ -1,6 +1,7 @@ package org.skywalking.apm.agent; import java.lang.instrument.Instrumentation; +import java.util.List; import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.dynamic.DynamicType; @@ -9,6 +10,7 @@ import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.conf.SnifferConfigInitializer; import org.skywalking.apm.agent.core.logging.EasyLogResolver; import org.skywalking.apm.agent.core.plugin.AbstractClassEnhancePluginDefine; +import org.skywalking.apm.agent.core.plugin.EnhanceContext; import org.skywalking.apm.agent.core.plugin.PluginBootstrap; import org.skywalking.apm.agent.core.plugin.PluginException; import org.skywalking.apm.agent.core.plugin.PluginFinder; @@ -54,13 +56,21 @@ public class SkyWalkingAgent { @Override public DynamicType.Builder transform(DynamicType.Builder builder, TypeDescription typeDescription, ClassLoader classLoader, JavaModule module) { - AbstractClassEnhancePluginDefine pluginDefine = pluginFinder.find(typeDescription, classLoader); - if (pluginDefine != null) { - DynamicType.Builder newBuilder = pluginDefine.define(typeDescription.getTypeName(), builder, classLoader); - if (newBuilder != null) { - logger.debug("Finish the prepare stage for {}.", typeDescription.getName()); - return newBuilder; + List 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(), builder, classLoader, context); + if (possibleNewBuilder != null) { + newBuilder = possibleNewBuilder; + } } + if (context.isEnhanced()) { + logger.debug("Finish the prepare stage for {}.", typeDescription.getName()); + } + + return newBuilder; } logger.debug("Matched class {}, but ignore by finding mechanism.", typeDescription.getTypeName()); From 8244256a96daaaeace632e75ca7fb746aea74db4 Mon Sep 17 00:00:00 2001 From: clevertension Date: Fri, 29 Sep 2017 14:48:47 +0800 Subject: [PATCH 03/13] fix Illegal group reference --- .../apm/agent/core/logging/EasyLogger.java | 8 ++++-- .../agent/core/logging/EasyLoggerTest.java | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/logging/EasyLogger.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/logging/EasyLogger.java index 1986bf831..246cf494e 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/logging/EasyLogger.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/logging/EasyLogger.java @@ -4,6 +4,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.regex.Matcher; + import org.skywalking.apm.agent.core.conf.Config; import org.skywalking.apm.agent.core.conf.Constants; import org.skywalking.apm.logging.ILog; @@ -35,8 +37,10 @@ public class EasyLogger implements ILog { if (parametersIndex >= parameters.length) { break; } - - tmpMessage = tmpMessage.replaceFirst("\\{\\}", String.valueOf(parameters[parametersIndex++])); + /** + * @Fix the Illegal group reference issue + */ + tmpMessage = tmpMessage.replaceFirst("\\{\\}", Matcher.quoteReplacement(String.valueOf(parameters[parametersIndex++]))); startSize = index + 2; } return tmpMessage; diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java index e447ea9f0..e7ca1259f 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java @@ -53,6 +53,34 @@ public class EasyLoggerTest { .println(anyString()); } + @Test + public void testLogWithSpecialChar() { + PrintStream output = Mockito.mock(PrintStream.class); + System.setOut(output); + PrintStream err = Mockito.mock(PrintStream.class); + System.setErr(err); + EasyLogger logger = new EasyLogger(EasyLoggerTest.class); + + Assert.assertTrue(logger.isDebugEnable()); + Assert.assertTrue(logger.isInfoEnable()); + Assert.assertTrue(logger.isWarnEnable()); + Assert.assertTrue(logger.isErrorEnable()); + + logger.debug("$$$$"); + logger.debug("hello {}", "$$$$"); + logger.info("{}{}"); + logger.info("hello {}", "{}{}"); + + logger.warn("hello {}", "\\"); + logger.warn("hello \\"); + logger.error("hello <>.."); + logger.error("hello ///\\\\", new NullPointerException()); + logger.error(new NullPointerException(), "hello {}", "&&&**%%"); + + Mockito.verify(output, times(9)) + .println(anyString()); + } + @Test public void testFormat() { NullPointerException exception = new NullPointerException(); From 4ca612f65e2a2317239a021b01bf4d4e1b31f790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Fri, 29 Sep 2017 14:48:34 +0800 Subject: [PATCH 04/13] Update TraceSegmentServiceClient.java Upstream log can't output correctly. --- .../apm/agent/core/remote/TraceSegmentServiceClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/TraceSegmentServiceClient.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/TraceSegmentServiceClient.java index 724b440a3..18eece179 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/TraceSegmentServiceClient.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/remote/TraceSegmentServiceClient.java @@ -112,7 +112,7 @@ public class TraceSegmentServiceClient implements BootService, IConsumer 30 * 1000) { + if (currentTimeMillis - lastLogTime > 30 * 1000) { lastLogTime = currentTimeMillis; if (segmentUplinkedCounter > 0) { logger.debug("{} trace segments have been sent to collector.", segmentUplinkedCounter); From 48738abf53ff64229c837d604cc6ff3a2d71b02f Mon Sep 17 00:00:00 2001 From: clevertension Date: Fri, 29 Sep 2017 15:11:20 +0800 Subject: [PATCH 05/13] fix unit test --- .../org/skywalking/apm/agent/core/logging/EasyLoggerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java index e7ca1259f..7288fd117 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java @@ -88,7 +88,7 @@ public class EasyLoggerTest { String formatLines = logger.format(exception); String[] lines = formatLines.split(Constants.LINE_SEPARATOR); Assert.assertEquals("java.lang.NullPointerException", lines[1]); - Assert.assertEquals("\tat org.skywalking.apm.agent.core.logging.EasyLoggerTest.testFormat(EasyLoggerTest.java:58)", lines[2]); + Assert.assertEquals("\tat org.skywalking.apm.agent.core.logging.EasyLoggerTest.testFormat(EasyLoggerTest.java:86)", lines[2]); } @AfterClass From 7a86adc64be19f79963ddfde01c83c64803721e4 Mon Sep 17 00:00:00 2001 From: clevertension Date: Fri, 29 Sep 2017 15:23:37 +0800 Subject: [PATCH 06/13] add more special chars --- .../org/skywalking/apm/agent/core/logging/EasyLoggerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java index 7288fd117..e3866d342 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/logging/EasyLoggerTest.java @@ -66,8 +66,8 @@ public class EasyLoggerTest { Assert.assertTrue(logger.isWarnEnable()); Assert.assertTrue(logger.isErrorEnable()); - logger.debug("$$$$"); - logger.debug("hello {}", "$$$$"); + logger.debug("$^!@#*()"); + logger.debug("hello {}", "!@#$%^&*(),./[]:;"); logger.info("{}{}"); logger.info("hello {}", "{}{}"); From b806bf4692d77867d49f4686cc97b7ac2da47c40 Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 29 Sep 2017 17:18:14 +0800 Subject: [PATCH 07/13] Change version for next iteration. --- apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml | 2 +- apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml | 2 +- apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml | 2 +- apm-application-toolkit/apm-toolkit-opentracing/pom.xml | 2 +- apm-application-toolkit/apm-toolkit-trace/pom.xml | 2 +- apm-application-toolkit/pom.xml | 2 +- apm-collector/apm-collector-agentjvm/pom.xml | 2 +- apm-collector/apm-collector-agentregister/pom.xml | 2 +- apm-collector/apm-collector-agentserver/pom.xml | 2 +- apm-collector/apm-collector-agentstream/pom.xml | 2 +- apm-collector/apm-collector-boot/pom.xml | 2 +- apm-collector/apm-collector-client/pom.xml | 2 +- apm-collector/apm-collector-cluster/pom.xml | 2 +- apm-collector/apm-collector-core/pom.xml | 2 +- apm-collector/apm-collector-queue/pom.xml | 2 +- apm-collector/apm-collector-remote/pom.xml | 2 +- apm-collector/apm-collector-server/pom.xml | 2 +- apm-collector/apm-collector-storage/pom.xml | 2 +- apm-collector/apm-collector-stream/pom.xml | 2 +- apm-collector/apm-collector-ui/pom.xml | 2 +- apm-collector/pom.xml | 2 +- apm-commons/apm-datacarrier/pom.xml | 2 +- apm-commons/apm-logging-api/pom.xml | 2 +- apm-commons/apm-util/pom.xml | 2 +- apm-commons/pom.xml | 2 +- apm-network/pom.xml | 2 +- apm-sniffer/apm-agent-core/pom.xml | 2 +- apm-sniffer/apm-agent/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/dubbo-plugin/pom.xml | 2 +- .../apm-sdk-plugin/feign-default-http-9.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/jdbc-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/pom.xml | 2 +- .../jetty-plugin/jetty-client-9.x-plugin/pom.xml | 2 +- .../jetty-plugin/jetty-server-9.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/jetty-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/motan-plugin/pom.xml | 2 +- .../apm-sdk-plugin/nutz-plugins/http-1.x-plugin/pom.xml | 2 +- .../nutz-plugins/mvc-annotation-1.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/nutz-plugins/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/pom.xml | 2 +- .../spring-plugins/concurrent-util-4.x-plugin/pom.xml | 2 +- .../spring-plugins/mvc-annotation-4.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml | 2 +- .../spring-plugins/resttemplate-4.x-plugin/pom.xml | 2 +- .../spring-plugins/spring-cloud/netflix-plugins/pom.xml | 2 +- .../netflix-plugins/spring-cloud-feign-1.x-plugin/pom.xml | 2 +- .../apm-sdk-plugin/spring-plugins/spring-cloud/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml | 2 +- apm-sniffer/apm-test-tools/pom.xml | 2 +- .../apm-toolkit-log4j-1.x-activation/pom.xml | 2 +- .../apm-toolkit-log4j-2.x-activation/pom.xml | 2 +- .../apm-toolkit-logback-1.x-activation/pom.xml | 2 +- .../apm-toolkit-opentracing-activation/pom.xml | 2 +- .../apm-toolkit-trace-activation/pom.xml | 2 +- apm-sniffer/apm-toolkit-activation/pom.xml | 2 +- apm-sniffer/pom.xml | 4 ++-- docker-compose.yml | 4 ++-- pom.xml | 2 +- 64 files changed, 66 insertions(+), 66 deletions(-) diff --git a/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml b/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml index 2b0ac0a0c..e6c4e91dd 100644 --- a/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml +++ b/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml @@ -5,7 +5,7 @@ apm-application-toolkit org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml b/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml index 353e86ab7..8ec7da86c 100644 --- a/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml +++ b/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml @@ -5,7 +5,7 @@ apm-application-toolkit org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml b/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml index c35c18b3d..2a0aa7c75 100644 --- a/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml +++ b/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml @@ -5,7 +5,7 @@ apm-application-toolkit org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-application-toolkit/apm-toolkit-opentracing/pom.xml b/apm-application-toolkit/apm-toolkit-opentracing/pom.xml index 8d1fc5167..9d3e28cdc 100644 --- a/apm-application-toolkit/apm-toolkit-opentracing/pom.xml +++ b/apm-application-toolkit/apm-toolkit-opentracing/pom.xml @@ -5,7 +5,7 @@ apm-application-toolkit org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-application-toolkit/apm-toolkit-trace/pom.xml b/apm-application-toolkit/apm-toolkit-trace/pom.xml index 54c73b6e9..df3cb0856 100644 --- a/apm-application-toolkit/apm-toolkit-trace/pom.xml +++ b/apm-application-toolkit/apm-toolkit-trace/pom.xml @@ -4,7 +4,7 @@ apm-application-toolkit org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-application-toolkit/pom.xml b/apm-application-toolkit/pom.xml index 9b53616be..9fa68d4fa 100644 --- a/apm-application-toolkit/pom.xml +++ b/apm-application-toolkit/pom.xml @@ -3,7 +3,7 @@ apm org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 apm-application-toolkit diff --git a/apm-collector/apm-collector-agentjvm/pom.xml b/apm-collector/apm-collector-agentjvm/pom.xml index 4d928fd65..da3893e16 100644 --- a/apm-collector/apm-collector-agentjvm/pom.xml +++ b/apm-collector/apm-collector-agentjvm/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-agentregister/pom.xml b/apm-collector/apm-collector-agentregister/pom.xml index 785cfda00..3f1cb1e19 100644 --- a/apm-collector/apm-collector-agentregister/pom.xml +++ b/apm-collector/apm-collector-agentregister/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-agentserver/pom.xml b/apm-collector/apm-collector-agentserver/pom.xml index c19370cbe..809c04d95 100644 --- a/apm-collector/apm-collector-agentserver/pom.xml +++ b/apm-collector/apm-collector-agentserver/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-agentstream/pom.xml b/apm-collector/apm-collector-agentstream/pom.xml index fc0f8a2c8..fe6e21669 100644 --- a/apm-collector/apm-collector-agentstream/pom.xml +++ b/apm-collector/apm-collector-agentstream/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-boot/pom.xml b/apm-collector/apm-collector-boot/pom.xml index 0ab8dd069..ccf9cdea5 100644 --- a/apm-collector/apm-collector-boot/pom.xml +++ b/apm-collector/apm-collector-boot/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-client/pom.xml b/apm-collector/apm-collector-client/pom.xml index b9a8a8ccc..d124f433d 100644 --- a/apm-collector/apm-collector-client/pom.xml +++ b/apm-collector/apm-collector-client/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-cluster/pom.xml b/apm-collector/apm-collector-cluster/pom.xml index e0378e33a..959203292 100644 --- a/apm-collector/apm-collector-cluster/pom.xml +++ b/apm-collector/apm-collector-cluster/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-core/pom.xml b/apm-collector/apm-collector-core/pom.xml index 64cb3378e..94bc4d25b 100644 --- a/apm-collector/apm-collector-core/pom.xml +++ b/apm-collector/apm-collector-core/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-queue/pom.xml b/apm-collector/apm-collector-queue/pom.xml index dce4db83a..5329acc24 100644 --- a/apm-collector/apm-collector-queue/pom.xml +++ b/apm-collector/apm-collector-queue/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-remote/pom.xml b/apm-collector/apm-collector-remote/pom.xml index fc10ff334..82a8fe919 100644 --- a/apm-collector/apm-collector-remote/pom.xml +++ b/apm-collector/apm-collector-remote/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-server/pom.xml b/apm-collector/apm-collector-server/pom.xml index 40c9f6923..e3c2b642b 100644 --- a/apm-collector/apm-collector-server/pom.xml +++ b/apm-collector/apm-collector-server/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-storage/pom.xml b/apm-collector/apm-collector-storage/pom.xml index 9b88c0c4d..67cf27ba7 100644 --- a/apm-collector/apm-collector-storage/pom.xml +++ b/apm-collector/apm-collector-storage/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-stream/pom.xml b/apm-collector/apm-collector-stream/pom.xml index 6d3f312a9..354e49a1d 100644 --- a/apm-collector/apm-collector-stream/pom.xml +++ b/apm-collector/apm-collector-stream/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/apm-collector-ui/pom.xml b/apm-collector/apm-collector-ui/pom.xml index fcfc03e59..9454a74d9 100644 --- a/apm-collector/apm-collector-ui/pom.xml +++ b/apm-collector/apm-collector-ui/pom.xml @@ -5,7 +5,7 @@ apm-collector org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml index 76d9675cc..1849beb50 100644 --- a/apm-collector/pom.xml +++ b/apm-collector/pom.xml @@ -21,7 +21,7 @@ apm org.skywalking - 3.2.2-2017 + 3.2.3-2017 apm-collector pom diff --git a/apm-commons/apm-datacarrier/pom.xml b/apm-commons/apm-datacarrier/pom.xml index 75a74737a..c80318e34 100644 --- a/apm-commons/apm-datacarrier/pom.xml +++ b/apm-commons/apm-datacarrier/pom.xml @@ -5,7 +5,7 @@ apm-commons org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-commons/apm-logging-api/pom.xml b/apm-commons/apm-logging-api/pom.xml index 9dda70051..e2ecc73aa 100644 --- a/apm-commons/apm-logging-api/pom.xml +++ b/apm-commons/apm-logging-api/pom.xml @@ -5,7 +5,7 @@ apm-commons org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-commons/apm-util/pom.xml b/apm-commons/apm-util/pom.xml index c93727bf8..9d3bdf635 100644 --- a/apm-commons/apm-util/pom.xml +++ b/apm-commons/apm-util/pom.xml @@ -3,7 +3,7 @@ apm-commons org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-commons/pom.xml b/apm-commons/pom.xml index 23264ebda..7aa2b1d5f 100644 --- a/apm-commons/pom.xml +++ b/apm-commons/pom.xml @@ -3,7 +3,7 @@ apm org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-network/pom.xml b/apm-network/pom.xml index 87bbeb314..923f91ca1 100644 --- a/apm-network/pom.xml +++ b/apm-network/pom.xml @@ -5,7 +5,7 @@ apm org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-agent-core/pom.xml b/apm-sniffer/apm-agent-core/pom.xml index 0e3a5e7aa..cee0cb358 100644 --- a/apm-sniffer/apm-agent-core/pom.xml +++ b/apm-sniffer/apm-agent-core/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm-sniffer - 3.2.2-2017 + 3.2.3-2017 apm-agent-core diff --git a/apm-sniffer/apm-agent/pom.xml b/apm-sniffer/apm-agent/pom.xml index 4625a689b..064e0917c 100644 --- a/apm-sniffer/apm-agent/pom.xml +++ b/apm-sniffer/apm-agent/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm-sniffer - 3.2.2-2017 + 3.2.3-2017 apm-agent diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/pom.xml index 69f683466..548bf6e73 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/pom.xml @@ -3,7 +3,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/pom.xml index 3eb250789..7b5b64e71 100644 --- a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/pom.xml index 66e70ea6c..ec479a918 100644 --- a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/pom.xml @@ -6,7 +6,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 apm-httpClient-4.x-plugin diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/pom.xml index c45224911..991ce75f2 100755 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/pom.xml @@ -3,7 +3,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/pom.xml index 06b9084db..33568fa94 100644 --- a/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/pom.xml @@ -6,7 +6,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 apm-jedis-2.x-plugin diff --git a/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-client-9.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-client-9.x-plugin/pom.xml index 3810f0d20..d2aeb3159 100644 --- a/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-client-9.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-client-9.x-plugin/pom.xml @@ -3,7 +3,7 @@ jetty-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/pom.xml index 5c5d1d2dd..ffc60f4ae 100644 --- a/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/pom.xml @@ -3,7 +3,7 @@ jetty-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/jetty-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/jetty-plugin/pom.xml index da6673642..1ddf5096c 100644 --- a/apm-sniffer/apm-sdk-plugin/jetty-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/jetty-plugin/pom.xml @@ -6,7 +6,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 jetty-plugins diff --git a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/pom.xml index 598a22b10..e7eeb6179 100644 --- a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/pom.xml @@ -4,7 +4,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 apm-mongodb-3.x-plugin diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/motan-plugin/pom.xml index ad4e5291d..2dea6b491 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/pom.xml @@ -3,7 +3,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/nutz-plugins/http-1.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/nutz-plugins/http-1.x-plugin/pom.xml index 62fc264da..623f3e100 100644 --- a/apm-sniffer/apm-sdk-plugin/nutz-plugins/http-1.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/nutz-plugins/http-1.x-plugin/pom.xml @@ -3,7 +3,7 @@ nutz-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/nutz-plugins/mvc-annotation-1.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/nutz-plugins/mvc-annotation-1.x-plugin/pom.xml index bb39ac60b..f86307b11 100644 --- a/apm-sniffer/apm-sdk-plugin/nutz-plugins/mvc-annotation-1.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/nutz-plugins/mvc-annotation-1.x-plugin/pom.xml @@ -3,7 +3,7 @@ nutz-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/nutz-plugins/pom.xml b/apm-sniffer/apm-sdk-plugin/nutz-plugins/pom.xml index 3719976d2..8c0fcbf2c 100644 --- a/apm-sniffer/apm-sdk-plugin/nutz-plugins/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/nutz-plugins/pom.xml @@ -6,7 +6,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 nutz-plugins diff --git a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/pom.xml index 9ff2e9d13..b4f277614 100644 --- a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index fe8125371..145822656 100644 --- a/apm-sniffer/apm-sdk-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/pom.xml @@ -6,7 +6,7 @@ org.skywalking apm-sniffer - 3.2.2-2017 + 3.2.3-2017 apm-sdk-plugin diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/pom.xml index 24de2ed57..0214734b6 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/pom.xml @@ -7,7 +7,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 apm-resin-3.x-plugin diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/pom.xml index 3deae1114..b6d566b17 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/pom.xml @@ -7,7 +7,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 apm-resin-4.x-plugin diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/concurrent-util-4.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/concurrent-util-4.x-plugin/pom.xml index 54a643ee8..1f0b31bb0 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/concurrent-util-4.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/concurrent-util-4.x-plugin/pom.xml @@ -3,7 +3,7 @@ spring-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml index 47cbe3bb3..ac0c66a7b 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/pom.xml @@ -3,7 +3,7 @@ spring-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml index 27a339eab..c6fcc9849 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/pom.xml @@ -6,7 +6,7 @@ org.skywalking apm-sdk-plugin - 3.2.2-2017 + 3.2.3-2017 spring-plugins diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/pom.xml index 445e2ac34..708606b0d 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/pom.xml @@ -3,7 +3,7 @@ spring-plugins org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/pom.xml index fdb67f52f..cb4c3b7bf 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/pom.xml @@ -6,7 +6,7 @@ org.skywalking spring-cloud - 3.2.2-2017 + 3.2.3-2017 netflix-plugins diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/spring-cloud-feign-1.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/spring-cloud-feign-1.x-plugin/pom.xml index 718035bb1..5e25a10ed 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/spring-cloud-feign-1.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/netflix-plugins/spring-cloud-feign-1.x-plugin/pom.xml @@ -6,7 +6,7 @@ org.skywalking netflix-plugins - 3.2.2-2017 + 3.2.3-2017 apm-spring-cloud-feign-1.x-plugin diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/pom.xml b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/pom.xml index 83a58b588..98f40ab3d 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/spring-cloud/pom.xml @@ -6,7 +6,7 @@ org.skywalking spring-plugins - 3.2.2-2017 + 3.2.3-2017 spring-cloud diff --git a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml index 693c05c3f..55cf40f6a 100644 --- a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/pom.xml @@ -3,7 +3,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml index 80beb63a6..7fb0b9475 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml @@ -3,7 +3,7 @@ apm-sdk-plugin org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-test-tools/pom.xml b/apm-sniffer/apm-test-tools/pom.xml index 2284660b8..2ab41c5f3 100644 --- a/apm-sniffer/apm-test-tools/pom.xml +++ b/apm-sniffer/apm-test-tools/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm-sniffer - 3.2.2-2017 + 3.2.3-2017 apm-test-tools diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/pom.xml index 31e2d140c..8a3036262 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/pom.xml +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/pom.xml @@ -5,7 +5,7 @@ apm-toolkit-activation org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/pom.xml index a21cf344b..697358e0a 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/pom.xml +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/pom.xml @@ -5,7 +5,7 @@ apm-toolkit-activation org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/pom.xml index 9750ae9f6..c920d2ba7 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/pom.xml +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/pom.xml @@ -5,7 +5,7 @@ apm-toolkit-activation org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/pom.xml index a585f4385..5471b5940 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/pom.xml +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/pom.xml @@ -5,7 +5,7 @@ apm-toolkit-activation org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-activation/pom.xml index 8b7810ac4..94ab26e6f 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-activation/pom.xml +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-activation/pom.xml @@ -5,7 +5,7 @@ apm-toolkit-activation org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 diff --git a/apm-sniffer/apm-toolkit-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/pom.xml index b9e148c82..654a3f4c4 100644 --- a/apm-sniffer/apm-toolkit-activation/pom.xml +++ b/apm-sniffer/apm-toolkit-activation/pom.xml @@ -5,7 +5,7 @@ apm-sniffer org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 pom diff --git a/apm-sniffer/pom.xml b/apm-sniffer/pom.xml index 73635eaf6..9be02a1f0 100644 --- a/apm-sniffer/pom.xml +++ b/apm-sniffer/pom.xml @@ -5,7 +5,7 @@ apm org.skywalking - 3.2.2-2017 + 3.2.3-2017 4.0.0 @@ -28,7 +28,7 @@ org.skywalking apm-util - 3.2.2-2017 + 3.2.3-2017 diff --git a/docker-compose.yml b/docker-compose.yml index 459d26307..b74c96c00 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '2.1' services: skywalking-webui: - image: skywalking/skywalking-ui:3.2.2-2017 + image: skywalking/skywalking-ui:3.2.3-2017 expose: - "8080" ports: @@ -15,7 +15,7 @@ services: - COLLECTOR_SERVERS=skywalking-collector:10800 skywalking-collector: - image: skywalking/skywalking-collector:3.2.2-2017 + image: skywalking/skywalking-collector:3.2.3-2017 expose: - "10800" - "11800" diff --git a/pom.xml b/pom.xml index 523605c46..83c3d2eea 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm - 3.2.2-2017 + 3.2.3-2017 From 5f747e5ead2b564379fa5882954959f80df8a91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Sat, 30 Sep 2017 15:42:42 +0800 Subject: [PATCH 08/13] Update SkyWalkingAgent.java Fix bug. --- .../src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java b/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java index fde12af83..0d8a51d62 100644 --- a/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java +++ b/apm-sniffer/apm-agent/src/main/java/org/skywalking/apm/agent/SkyWalkingAgent.java @@ -61,7 +61,7 @@ public class SkyWalkingAgent { DynamicType.Builder newBuilder = builder; EnhanceContext context = new EnhanceContext(); for (AbstractClassEnhancePluginDefine define : pluginDefines) { - DynamicType.Builder possibleNewBuilder = define.define(typeDescription.getTypeName(), builder, classLoader, context); + DynamicType.Builder possibleNewBuilder = define.define(typeDescription.getTypeName(), newBuilder, classLoader, context); if (possibleNewBuilder != null) { newBuilder = possibleNewBuilder; } From 50e29b6dd07e26e29c6e441097b2fc37192896cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Sat, 30 Sep 2017 09:30:46 +0800 Subject: [PATCH 09/13] Update README_ZH.md --- README_ZH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_ZH.md b/README_ZH.md index 12edcffdb..f86fcd3cc 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -60,7 +60,7 @@ This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDU - JVM明细信息 - + - 服务依赖树. From f46b9ec4a561bd4b820fa7cc11c1aed0e7ffa5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Sat, 30 Sep 2017 09:31:10 +0800 Subject: [PATCH 10/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 15037a4f1..09eb5e25c 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDU - JVM Detail. - + - Services Dependency Tree. From 2153ab09b6b5f27fc84e215a35b496d8cc4c5b22 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Sat, 30 Sep 2017 13:32:49 +0800 Subject: [PATCH 11/13] support @RequestMapping annotation of spring 3.x --- .../plugin/spring/mvc/ControllerServiceMethodInterceptor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java index 08967f935..839bed779 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java @@ -16,6 +16,7 @@ import org.skywalking.apm.network.trace.component.ComponentsDefine; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.context.request.ServletWebRequest; /** * The ControllerServiceMethodInterceptor only use the first mapping value. @@ -58,7 +59,7 @@ public class ControllerServiceMethodInterceptor implements InstanceMethodsAround @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { - HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse(); + HttpServletResponse response = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse(); AbstractSpan span = ContextManager.activeSpan(); if (response.getStatus() >= 400) { From 1b6a3324680757223e9987e956a2a6281a02e63a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Sat, 30 Sep 2017 15:08:47 +0800 Subject: [PATCH 12/13] Revert "support @RequestMapping annotation of spring 3.x" --- .../plugin/spring/mvc/ControllerServiceMethodInterceptor.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java index 839bed779..08967f935 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/mvc/ControllerServiceMethodInterceptor.java @@ -16,7 +16,6 @@ import org.skywalking.apm.network.trace.component.ComponentsDefine; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.context.request.ServletWebRequest; /** * The ControllerServiceMethodInterceptor only use the first mapping value. @@ -59,7 +58,7 @@ public class ControllerServiceMethodInterceptor implements InstanceMethodsAround @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { - HttpServletResponse response = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse(); + HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse(); AbstractSpan span = ContextManager.activeSpan(); if (response.getStatus() >= 400) { From 22deca0484e54487ab3de1332279feb1775fa56e Mon Sep 17 00:00:00 2001 From: IluckySi Date: Sat, 7 Oct 2017 21:53:48 +0800 Subject: [PATCH 13/13] Support Spymemcached V2.0 --- .../spymemcached-2.x-plugin/pom.xml | 62 +++++++++---------- .../v2/MemcachedMethodInterceptor.java | 5 +- .../v2/define/MemcachedInstrumentation.java | 2 +- 3 files changed, 33 insertions(+), 36 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml index c05d2a584..784547130 100644 --- a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/pom.xml @@ -1,35 +1,35 @@ - 4.0.0 - - org.skywalking - apm-sdk-plugin - 3.2.2-2017 - - - apm-spymemcached-2.x-plugin - spymemcached-2.x-plugin - http://maven.apache.org + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + 4.0.0 + + org.skywalking + apm-sdk-plugin + 3.2.3-2017 + - - UTF-8 - 2.11.1 - + apm-spymemcached-2.x-plugin + spymemcached-2.x-plugin + http://maven.apache.org - - - net.spy - spymemcached - ${spymemcached.version} - provided - - - org.apache.logging.log4j - log4j-core - 2.4.1 - test - - - + + UTF-8 + 2.11.1 + + + + + net.spy + spymemcached + ${spymemcached.version} + provided + + + org.apache.logging.log4j + log4j-core + 2.4.1 + test + + + \ No newline at end of file diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java index f760919bf..89a864dab 100644 --- a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java @@ -18,15 +18,12 @@ public class MemcachedMethodInterceptor implements InstanceMethodsAroundIntercep @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { - Object[] arguments = allArguments; String peer = String.valueOf(objInst.getSkyWalkingDynamicField()); AbstractSpan span = ContextManager.createExitSpan(SPY_MEMCACHE + method.getName(), peer); span.setComponent(ComponentsDefine.MEMCACHE); Tags.DB_TYPE.set(span, ComponentsDefine.MEMCACHE.getName()); SpanLayer.asDB(span); - if (allArguments.length > 0 && arguments[0] instanceof String) { - Tags.DB_STATEMENT.set(span, method.getName() + " " + arguments[0]); - } + Tags.DB_STATEMENT.set(span, method.getName() + " " + allArguments[0]); } @Override diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java index f9b1706cf..bbb18baab 100644 --- a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/skywalking/apm/plugin/spymemcached/v2/define/MemcachedInstrumentation.java @@ -22,7 +22,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; * {@link XMemcachedConstructorWithInetSocketAddressListArgInterceptor} intercepts the constructor with * argument {@link java.net.InetSocketAddress}. * - *@author IluckySi + * @author IluckySi * */ public class MemcachedInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {