From 8854921f9e23650e4dcc185eefe16da6136bf6f6 Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Thu, 11 Jan 2018 09:48:42 +0800 Subject: [PATCH 01/18] fixes #735 Concurrency conflicts in Spring plugin --- .../mvc/commons/EnhanceRequireObjectCache.java | 18 ++++++++++-------- .../InvokeHandlerMethodInterceptor.java | 9 ++++++--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java index 914882eed..a17d8eea0 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java @@ -18,25 +18,26 @@ package org.apache.skywalking.apm.plugin.spring.mvc.commons; -import java.lang.reflect.Method; -import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.request.NativeWebRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; + public class EnhanceRequireObjectCache { private PathMappingCache pathMappingCache; - private NativeWebRequest nativeWebRequest; - private HttpServletResponse httpResponse; + private ThreadLocal nativeWebRequest = new ThreadLocal(); + private ThreadLocal httpResponse = new ThreadLocal(); public void setPathMappingCache(PathMappingCache pathMappingCache) { this.pathMappingCache = pathMappingCache; } public HttpServletResponse getHttpServletResponse() { - return httpResponse == null ? (HttpServletResponse)nativeWebRequest.getNativeResponse() : httpResponse; + return httpResponse.get() == null ? (HttpServletResponse) nativeWebRequest.get().getNativeResponse() : httpResponse.get(); } public void setNativeWebRequest(NativeWebRequest nativeWebRequest) { - this.nativeWebRequest = nativeWebRequest; + this.nativeWebRequest.set(nativeWebRequest); } public String findPathMapping(Method method) { @@ -52,10 +53,11 @@ public class EnhanceRequireObjectCache { } public void setHttpResponse(HttpServletResponse httpResponse) { - this.httpResponse = httpResponse; + this.httpResponse.set(httpResponse); } public HttpServletResponse getHttpResponse() { - return httpResponse; + return httpResponse.get(); } + } diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java index 7a502d21f..061d505d4 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java @@ -18,13 +18,14 @@ package org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor; -import java.lang.reflect.Method; -import javax.servlet.http.HttpServletResponse; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; + public class InvokeHandlerMethodInterceptor implements InstanceMethodsAroundInterceptor { @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, @@ -37,11 +38,13 @@ public class InvokeHandlerMethodInterceptor implements InstanceMethodsAroundInte @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { + if (allArguments[2] instanceof EnhancedInstance) { + ((EnhanceRequireObjectCache)((EnhancedInstance)allArguments[2]).getSkyWalkingDynamicField()).setHttpResponse(null); + } return ret; } @Override public void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Throwable t) { - } } From 647f4f00a7405be79d5a9594b4ae4a03c1a4a862 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 11 Jan 2018 16:22:37 +0800 Subject: [PATCH 02/18] =?UTF-8?q?fixes=20#735=20Concurrency=20conflicts=20?= =?UTF-8?q?in=20Spring=20plugin=20=EF=BC=9Aclear=20ThreadLocal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mvc/commons/EnhanceRequireObjectCache.java | 4 ---- .../interceptor/AbstractMethodInteceptor.java | 17 ++++++++++------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java index a17d8eea0..7623582f2 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java @@ -56,8 +56,4 @@ public class EnhanceRequireObjectCache { this.httpResponse.set(httpResponse); } - public HttpServletResponse getHttpResponse() { - return httpResponse.get(); - } - } diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java index ca7d97597..8941cd10b 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java @@ -19,23 +19,24 @@ package org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor; -import java.lang.reflect.Method; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import org.apache.skywalking.apm.agent.core.context.CarrierItem; import org.apache.skywalking.apm.agent.core.context.ContextCarrier; +import org.apache.skywalking.apm.agent.core.context.ContextManager; import org.apache.skywalking.apm.agent.core.context.tag.Tags; import org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; -import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; -import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache; -import org.apache.skywalking.apm.agent.core.context.CarrierItem; -import org.apache.skywalking.apm.agent.core.context.ContextManager; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; +import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; +import org.apache.skywalking.apm.plugin.spring.mvc.commons.EnhanceRequireObjectCache; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; + /** * the abstract method inteceptor */ @@ -80,6 +81,8 @@ public abstract class AbstractMethodInteceptor implements InstanceMethodsAroundI Tags.STATUS_CODE.set(span, Integer.toString(response.getStatus())); } ContextManager.stopSpan(); + + ((EnhanceRequireObjectCache)objInst.getSkyWalkingDynamicField()).setNativeWebRequest(null); return ret; } From 44a5526c78770578bc9ced9911ba32c95e923f70 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 11 Jan 2018 20:51:19 +0800 Subject: [PATCH 03/18] fixes #735 Concurrency conflicts in Spring plugin * EnhanceRequireObjectCache add clearRequestAndResponse method * invoke EnhanceRequireObjectCache clearRequestAndResponse At AbstractMethodInterceptor --- .../commons/EnhanceRequireObjectCache.java | 5 +++++ ...or.java => AbstractMethodInterceptor.java} | 22 ++++++++++--------- .../InvokeHandlerMethodInterceptor.java | 3 --- .../RequestMappingMethodInterceptor.java | 5 +++-- .../RestMappingMethodInterceptor.java | 9 +++----- 5 files changed, 23 insertions(+), 21 deletions(-) rename apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/{AbstractMethodInteceptor.java => AbstractMethodInterceptor.java} (85%) diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java index 7623582f2..cbadbfdab 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/EnhanceRequireObjectCache.java @@ -56,4 +56,9 @@ public class EnhanceRequireObjectCache { this.httpResponse.set(httpResponse); } + public void clearRequestAndResponse() { + setNativeWebRequest(null); + setHttpResponse(null); + } + } diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInterceptor.java similarity index 85% rename from apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java rename to apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInterceptor.java index 8941cd10b..798a2216e 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInteceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/AbstractMethodInterceptor.java @@ -40,7 +40,7 @@ import java.lang.reflect.Method; /** * the abstract method inteceptor */ -public abstract class AbstractMethodInteceptor implements InstanceMethodsAroundInterceptor { +public abstract class AbstractMethodInterceptor implements InstanceMethodsAroundInterceptor { public abstract String getRequestURL(Method method); @Override @@ -73,17 +73,19 @@ public abstract class AbstractMethodInteceptor implements InstanceMethodsAroundI @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { - HttpServletResponse response = ((EnhanceRequireObjectCache)objInst.getSkyWalkingDynamicField()).getHttpServletResponse(); + try { + HttpServletResponse response = ((EnhanceRequireObjectCache) objInst.getSkyWalkingDynamicField()).getHttpServletResponse(); - AbstractSpan span = ContextManager.activeSpan(); - if (response.getStatus() >= 400) { - span.errorOccurred(); - Tags.STATUS_CODE.set(span, Integer.toString(response.getStatus())); + AbstractSpan span = ContextManager.activeSpan(); + if (response.getStatus() >= 400) { + span.errorOccurred(); + Tags.STATUS_CODE.set(span, Integer.toString(response.getStatus())); + } + ContextManager.stopSpan(); + return ret; + } finally { + ((EnhanceRequireObjectCache)objInst.getSkyWalkingDynamicField()).clearRequestAndResponse(); } - ContextManager.stopSpan(); - - ((EnhanceRequireObjectCache)objInst.getSkyWalkingDynamicField()).setNativeWebRequest(null); - return ret; } @Override diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java index 061d505d4..c2d555608 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/InvokeHandlerMethodInterceptor.java @@ -38,9 +38,6 @@ public class InvokeHandlerMethodInterceptor implements InstanceMethodsAroundInte @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { - if (allArguments[2] instanceof EnhancedInstance) { - ((EnhanceRequireObjectCache)((EnhancedInstance)allArguments[2]).getSkyWalkingDynamicField()).setHttpResponse(null); - } return ret; } diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RequestMappingMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RequestMappingMethodInterceptor.java index 58c4bcf05..1dd6b7748 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RequestMappingMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RequestMappingMethodInterceptor.java @@ -19,16 +19,17 @@ package org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor; -import java.lang.reflect.Method; import org.springframework.web.bind.annotation.RequestMapping; +import java.lang.reflect.Method; + /** * The RequestMappingMethodInterceptor only use the first mapping value. * it will inteceptor with @RequestMapping * * @author clevertension */ -public class RequestMappingMethodInterceptor extends AbstractMethodInteceptor { +public class RequestMappingMethodInterceptor extends AbstractMethodInterceptor { @Override public String getRequestURL(Method method) { String requestURL = ""; diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RestMappingMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RestMappingMethodInterceptor.java index faee5b4cb..5cea58d0d 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RestMappingMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/mvc-annotation-commons/src/main/java/org/apache/skywalking/apm/plugin/spring/mvc/commons/interceptor/RestMappingMethodInterceptor.java @@ -19,12 +19,9 @@ package org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor; +import org.springframework.web.bind.annotation.*; + import java.lang.reflect.Method; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; /** * The RestMappingMethodInterceptor only use the first mapping value. @@ -34,7 +31,7 @@ import org.springframework.web.bind.annotation.PutMapping; * * @author clevertension */ -public class RestMappingMethodInterceptor extends AbstractMethodInteceptor { +public class RestMappingMethodInterceptor extends AbstractMethodInterceptor { @Override public String getRequestURL(Method method) { String requestURL = ""; From 6ce5bfd5690a812dc797aa372412d6d437cf6866 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 10:24:21 +0800 Subject: [PATCH 04/18] Make ci works with resin and ojdbc again. Try to build. --- .travis.yml | 12 ++-- apm-sniffer/apm-sdk-plugin/pom.xml | 94 ++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 540b9e8f0..c227d0a64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,14 @@ sudo: required -services: - - docker - language: java +before_install: + - cd ci-dependencies + - curl -O https://openskywalking.github.io/skywalking-ci-assist/jar/ojdbc14-10.2.0.4.0.jar + - curl -O https://openskywalking.github.io/skywalking-ci-assist/jar/resin-3.0.9.jar + - curl -O https://openskywalking.github.io/skywalking-ci-assist/jar/resin-4.0.41.jar + - cd .. + install: - jdk_switcher use oraclejdk8 - mvn clean install --quiet jacoco:report coveralls:report -after_success: - - bash ./travis/push_image.sh diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index 0bba88f18..82262e948 100644 --- a/apm-sniffer/apm-sdk-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/pom.xml @@ -212,6 +212,38 @@ oracle-10.x-plugin + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + install-ojdbc + false + process-resources + + exec + + + mvn + + install:install-file + -Dfile=ojdbc14-10.2.0.4.0.jar + -DgroupId=com.oracle + -DartifactId=ojdbc14 + -Dversion=10.2.0.4.0 + -Dpackaging=jar + + ${project.basedir}/ci-dependencies + + + + + + @@ -224,6 +256,37 @@ resin-3.x-plugin + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + install-ojdbc + false + process-resources + + exec + + + mvn + + install:install-file + -Dfile=resin-3.0.9.jar + -DgroupId=com.caucho + -DartifactId=resin + -Dversion=4.0.41 + -Dpackaging=jar + + ${project.basedir}/ci-dependencies + + + + + + @@ -236,6 +299,37 @@ resin-4.x-plugin + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + install-ojdbc + false + process-resources + + exec + + + mvn + + install:install-file + -Dfile=resin-4.0.41.jar + -DgroupId=com.caucho + -DartifactId=resin + -Dversion=4.0.41 + -Dpackaging=jar + + ${project.basedir}/ci-dependencies + + + + + + From 973718d94ec5f3fac9496e303aef310ce0ffd370 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 10:31:24 +0800 Subject: [PATCH 05/18] Adjust dir path. --- apm-sniffer/apm-sdk-plugin/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index 82262e948..660fa1514 100644 --- a/apm-sniffer/apm-sdk-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/pom.xml @@ -237,7 +237,7 @@ -Dversion=10.2.0.4.0 -Dpackaging=jar - ${project.basedir}/ci-dependencies + ${basedir}/../../ci-dependencies @@ -280,7 +280,7 @@ -Dversion=4.0.41 -Dpackaging=jar - ${project.basedir}/ci-dependencies + ${basedir}/../../ci-dependencies @@ -323,7 +323,7 @@ -Dversion=4.0.41 -Dpackaging=jar - ${project.basedir}/ci-dependencies + ${basedir}/../../ci-dependencies From 7b505549dbac15c7fc6d475a4a0c40b039a82e3a Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 10:41:23 +0800 Subject: [PATCH 06/18] Fix wrong url. --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index c227d0a64..ef09e4a44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,9 @@ sudo: required language: java before_install: - cd ci-dependencies - - curl -O https://openskywalking.github.io/skywalking-ci-assist/jar/ojdbc14-10.2.0.4.0.jar - - curl -O https://openskywalking.github.io/skywalking-ci-assist/jar/resin-3.0.9.jar - - curl -O https://openskywalking.github.io/skywalking-ci-assist/jar/resin-4.0.41.jar + - curl -O https://openskywalking.github.io/skywalking-ci-assist/jars/ojdbc14-10.2.0.4.0.jar + - curl -O https://openskywalking.github.io/skywalking-ci-assist/jars/resin-3.0.9.jar + - curl -O https://openskywalking.github.io/skywalking-ci-assist/jars/resin-4.0.41.jar - cd .. install: From 79579ba85ad0a4556084d066f57bc7ee49530fe5 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 12:01:45 +0800 Subject: [PATCH 07/18] Use maven repository resin 3 dependencies. --- apm-sniffer/apm-sdk-plugin/pom.xml | 31 ------------------------------ 1 file changed, 31 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index 660fa1514..1ae9e03dd 100644 --- a/apm-sniffer/apm-sdk-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/pom.xml @@ -256,37 +256,6 @@ resin-3.x-plugin - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - - install-ojdbc - false - process-resources - - exec - - - mvn - - install:install-file - -Dfile=resin-3.0.9.jar - -DgroupId=com.caucho - -DartifactId=resin - -Dversion=4.0.41 - -Dpackaging=jar - - ${basedir}/../../ci-dependencies - - - - - - From 4a01c08dc45eb6066a55c14b5f6d07d7e95530c7 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 14:22:01 +0800 Subject: [PATCH 08/18] Remove an install. --- apm-sniffer/apm-sdk-plugin/pom.xml | 63 ------------------------------ pom.xml | 32 +-------------- 2 files changed, 1 insertion(+), 94 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index 1ae9e03dd..0bba88f18 100644 --- a/apm-sniffer/apm-sdk-plugin/pom.xml +++ b/apm-sniffer/apm-sdk-plugin/pom.xml @@ -212,38 +212,6 @@ oracle-10.x-plugin - - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - - install-ojdbc - false - process-resources - - exec - - - mvn - - install:install-file - -Dfile=ojdbc14-10.2.0.4.0.jar - -DgroupId=com.oracle - -DartifactId=ojdbc14 - -Dversion=10.2.0.4.0 - -Dpackaging=jar - - ${basedir}/../../ci-dependencies - - - - - - @@ -268,37 +236,6 @@ resin-4.x-plugin - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - - install-ojdbc - false - process-resources - - exec - - - mvn - - install:install-file - -Dfile=resin-4.0.41.jar - -DgroupId=com.caucho - -DartifactId=resin - -Dversion=4.0.41 - -Dpackaging=jar - - ${basedir}/../../ci-dependencies - - - - - - diff --git a/pom.xml b/pom.xml index 3b60d2e26..c74621824 100644 --- a/pom.xml +++ b/pom.xml @@ -323,43 +323,13 @@ + install-resin-3 ${basedir}/ci-dependencies/resin-3.0.9.jar - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - - install-resin-3 - false - process-resources - - exec - - - mvn - - install:install-file - -Dfile=resin-3.0.9.jar - -DgroupId=com.caucho - -DartifactId=resin - -Dversion=3.0.9 - -Dpackaging=jar - - ${project.basedir}/ci-dependencies - - - - - - From 3cd03a720a7319dead5725c4f6a1072dff47970d Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 14:56:34 +0800 Subject: [PATCH 09/18] Add Chinese document about building resin and ojdbc plugins. --- docs/README_ZH.md | 2 +- docs/cn/How-to-build-CN.md | 8 ++++++++ pom.xml | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/README_ZH.md b/docs/README_ZH.md index 1db771371..8b612efc1 100644 --- a/docs/README_ZH.md +++ b/docs/README_ZH.md @@ -3,7 +3,7 @@ * [项目简介](/README_ZH.md) * [快速入门](cn/Quick-start-CN.md) - * [部署Collector镜像](cn/Deploy-docker-image.CN.md) + * [部署Collector镜像](cn/Deploy-docker-image-CN.md) * [中间件,框架与类库支持列表](Supported-list.md) * [如何关闭特定插件](cn/How-to-disable-plugin-CN.md) * APM相关介绍资料 diff --git a/docs/cn/How-to-build-CN.md b/docs/cn/How-to-build-CN.md index 8159b1746..07ce42936 100644 --- a/docs/cn/How-to-build-CN.md +++ b/docs/cn/How-to-build-CN.md @@ -16,3 +16,11 @@ - **apm-protocol/apm-network/target/generated-sources/protobuf**目录下的`grpc-java`和`java`目录 - **apm-collector/apm-collector-remote/apm-remote-grpc-provider/target/protobuf**目录下的`grpc-java`和`java`目录 +## 编译Resin-3, Resin-4 和 Oracle JDBC 驱动插件 +为了遵守Apache关于协议(License)的相关要求,不符合Apache相关要求的类库所对应的Plugin不会自动编译。如需编译对应的插件, +需要手动下载驱动或类库,并将文件拷贝到`ci-dependencies/`中,运行`mvn package`进行编译。 + +`ci-dependencies/`下对应的类库文件名为: +* resin-3.0.9.jar +* resin-4.0.41.jar +* ojdbc14-10.2.0.4.0.jar \ No newline at end of file diff --git a/pom.xml b/pom.xml index c74621824..4c88357c5 100644 --- a/pom.xml +++ b/pom.xml @@ -323,7 +323,7 @@ - + install-resin-3 From fdf4a6ea40165991c6d11c6f1d14aa72f6ed8e90 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 15:01:48 +0800 Subject: [PATCH 10/18] Fix typo. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4c88357c5..83985a493 100644 --- a/pom.xml +++ b/pom.xml @@ -323,7 +323,7 @@ - + install-resin-3 From 5da5d059dd0759debe2029cbd1ee2f30bc78efda Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Fri, 12 Jan 2018 16:03:19 +0800 Subject: [PATCH 11/18] Rmove a download. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ef09e4a44..031635c67 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ language: java before_install: - cd ci-dependencies - curl -O https://openskywalking.github.io/skywalking-ci-assist/jars/ojdbc14-10.2.0.4.0.jar - - curl -O https://openskywalking.github.io/skywalking-ci-assist/jars/resin-3.0.9.jar - curl -O https://openskywalking.github.io/skywalking-ci-assist/jars/resin-4.0.41.jar - cd .. From 79cddf659b57626b1698593f26324d40f9784c4d Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 13 Jan 2018 17:18:44 +0800 Subject: [PATCH 12/18] Changed boolean type to integer, true: 1, false: 0. --- .../jvm/provider/service/MemoryMetricService.java | 3 ++- .../register/ApplicationRegisterSerialWorker.java | 3 ++- .../provider/register/InstanceRegisterSerialWorker.java | 3 ++- .../register/provider/service/ApplicationIDService.java | 9 +++------ .../register/provider/service/InstanceIDService.java | 5 +++-- .../src/main/resources/application.yml | 8 ++++---- .../apm/collector/storage/table/jvm/MemoryMetric.java | 9 ++++----- .../collector/storage/table/register/Application.java | 9 ++++----- .../apm/collector/storage/table/register/Instance.java | 9 ++++----- .../storage/es/dao/cache/InstanceEsCacheDAO.java | 4 ---- .../storage/es/dao/cache/NetworkAddressEsCacheDAO.java | 2 +- .../memorymp/AbstractMemoryMetricEsPersistenceDAO.java | 2 +- .../memorymp/AbstractMemoryMetricH2PersistenceDAO.java | 4 ++-- 13 files changed, 32 insertions(+), 38 deletions(-) diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java index c9ed19bed..97e1d7fd0 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java @@ -22,6 +22,7 @@ import org.apache.skywalking.apm.collector.analysis.jvm.define.graph.GraphIdDefi import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IMemoryMetricService; import org.apache.skywalking.apm.collector.core.graph.Graph; import org.apache.skywalking.apm.collector.core.graph.GraphManager; +import org.apache.skywalking.apm.collector.core.util.BooleanUtils; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.ObjectUtils; import org.apache.skywalking.apm.collector.storage.table.jvm.MemoryMetric; @@ -53,7 +54,7 @@ public class MemoryMetricService implements IMemoryMetricService { memoryMetric.setId(id); memoryMetric.setMetricId(metricId); memoryMetric.setInstanceId(instanceId); - memoryMetric.setIsHeap(isHeap); + memoryMetric.setIsHeap(BooleanUtils.booleanToValue(isHeap)); memoryMetric.setInit(init); memoryMetric.setMax(max); memoryMetric.setUsed(used); diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java index 0562c9485..686320b54 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java @@ -25,6 +25,7 @@ import org.apache.skywalking.apm.collector.analysis.worker.model.base.WorkerExce import org.apache.skywalking.apm.collector.cache.CacheModule; import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService; import org.apache.skywalking.apm.collector.core.module.ModuleManager; +import org.apache.skywalking.apm.collector.core.util.BooleanUtils; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.storage.StorageModule; import org.apache.skywalking.apm.collector.storage.dao.register.IApplicationRegisterDAO; @@ -65,7 +66,7 @@ public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker { @@ -42,7 +42,7 @@ public abstract class AbstractMemoryMetricH2PersistenceDAO extends AbstractPersi memoryMetric.setMetricId(resultSet.getString(MemoryMetricTable.COLUMN_METRIC_ID)); memoryMetric.setInstanceId(resultSet.getInt(MemoryMetricTable.COLUMN_INSTANCE_ID)); - memoryMetric.setIsHeap(resultSet.getBoolean(MemoryMetricTable.COLUMN_IS_HEAP)); + memoryMetric.setIsHeap(resultSet.getInt(MemoryMetricTable.COLUMN_IS_HEAP)); memoryMetric.setInit(resultSet.getLong(MemoryMetricTable.COLUMN_INIT)); memoryMetric.setMax(resultSet.getLong(MemoryMetricTable.COLUMN_MAX)); From 18a83ce414e17c97e2bf99751fc1b9359b5e9b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Sun, 14 Jan 2018 10:07:06 +0800 Subject: [PATCH 13/18] Update NOTICE.txt Update year to 2018 --- NOTICE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NOTICE.txt b/NOTICE.txt index 241f32e67..36ebf1d03 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,5 +1,5 @@ Apache SkyWalking -Copyright 2015-2017 The Apache Software Foundation +Copyright 2015-2018 The Apache Software Foundation This product includes software developed by The Apache Software Foundation (http://www.apache.org/). From fc431d3c9a56f2155bd7971aa1665e2055c6a76d Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 14 Jan 2018 17:05:45 +0800 Subject: [PATCH 14/18] Missing change about boolean to integer. --- .../provider/worker/segment/SegmentCostSpanListener.java | 3 ++- .../apm/collector/storage/table/segment/SegmentCost.java | 9 ++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/segment/SegmentCostSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/segment/SegmentCostSpanListener.java index 9c16671e8..d12cfca97 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/segment/SegmentCostSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/segment/SegmentCostSpanListener.java @@ -33,6 +33,7 @@ import org.apache.skywalking.apm.collector.cache.service.ServiceNameCacheService import org.apache.skywalking.apm.collector.core.graph.Graph; import org.apache.skywalking.apm.collector.core.graph.GraphManager; import org.apache.skywalking.apm.collector.core.module.ModuleManager; +import org.apache.skywalking.apm.collector.core.util.BooleanUtils; import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; import org.apache.skywalking.apm.collector.storage.table.segment.SegmentCost; import org.slf4j.Logger; @@ -98,7 +99,7 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe Graph graph = GraphManager.INSTANCE.findGraph(MetricGraphIdDefine.SEGMENT_COST_GRAPH_ID, SegmentCost.class); logger.debug("segment cost listener build"); for (SegmentCost segmentCost : segmentCosts) { - segmentCost.setIsError(isError); + segmentCost.setIsError(BooleanUtils.booleanToValue(isError)); segmentCost.setTimeBucket(timeBucket); graph.start(segmentCost); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/segment/SegmentCost.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/segment/SegmentCost.java index cac209d8c..475019bd0 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/segment/SegmentCost.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/segment/SegmentCost.java @@ -22,7 +22,6 @@ import org.apache.skywalking.apm.collector.core.data.Column; import org.apache.skywalking.apm.collector.core.data.StreamData; import org.apache.skywalking.apm.collector.core.data.operator.CoverOperation; import org.apache.skywalking.apm.collector.core.data.operator.NonOperation; -import org.apache.skywalking.apm.collector.core.util.BooleanUtils; /** * @author peng-yongsheng @@ -127,11 +126,11 @@ public class SegmentCost extends StreamData { setDataInteger(0, applicationId); } - public Boolean getIsError() { - return BooleanUtils.valueToBoolean(getDataInteger(1)); + public Integer getIsError() { + return getDataInteger(1); } - public void setIsError(Boolean isError) { - setDataInteger(0, BooleanUtils.booleanToValue(isError)); + public void setIsError(Integer isError) { + setDataInteger(1, isError); } } From b04b06aac1256740c1d102ee83da3a5c3b7e2334 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 14 Jan 2018 17:40:15 +0800 Subject: [PATCH 15/18] Fixed the id auto increment bug, when there is just one record that id = -1, the expected value is 1, but actual return -1. --- .../provider/register/IdAutoIncrement.java | 18 ++++---- .../register/IdAutoIncrementTestCase.java | 46 +++++++++++++++++++ 2 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 apm-collector/apm-collector-analysis/analysis-register/register-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrementTestCase.java diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrement.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrement.java index 896e0efeb..cf1827e88 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrement.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrement.java @@ -25,18 +25,20 @@ public enum IdAutoIncrement { INSTANCE; public int increment(int min, int max) { - int instanceId; + int id; if (min == max) { - instanceId = -1; + if (min == 0) { + id = -1; + } else { + id = 1; + } } else if (min + max == 0) { - instanceId = max + 1; + id = max + 1; } else if (min + max > 0) { - instanceId = min - 1; - } else if (max < 0) { - instanceId = 1; + id = min - 1; } else { - instanceId = max + 1; + id = max + 1; } - return instanceId; + return id; } } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrementTestCase.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrementTestCase.java new file mode 100644 index 000000000..ad9d0e285 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/IdAutoIncrementTestCase.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.register.provider.register; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author peng-yongsheng + */ +public class IdAutoIncrementTestCase { + + @Test + public void testIncrement() { + int id = IdAutoIncrement.INSTANCE.increment(0, 0); + Assert.assertEquals(-1, id); + + id = IdAutoIncrement.INSTANCE.increment(-1, -1); + Assert.assertEquals(1, id); + + id = IdAutoIncrement.INSTANCE.increment(-1, 1); + Assert.assertEquals(2, id); + + id = IdAutoIncrement.INSTANCE.increment(-1, 2); + Assert.assertEquals(-2, id); + + id = IdAutoIncrement.INSTANCE.increment(-2, 2); + Assert.assertEquals(3, id); + } +} From c5bedc51dd08deabdc141a7df77988e9346cc8e0 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Mon, 15 Jan 2018 09:31:12 +0800 Subject: [PATCH 16/18] New badges about github stars and twitter followers. --- README.md | 3 ++- README_ZH.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0ac610447..1730de150 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ microservices, cloud native and container-based (Docker, K8s, Mesos) architectur Underlying technology is a distributed tracing system. [![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) -[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/AsfSkyWalking) +[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=social&label=Stars)](https://github.com/apache/incubator-skywalking) +[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=social&label=Follow)](https://twitter.com/AsfSkyWalking) [![Join the chat at https://gitter.im/sky-walking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) [![OpenTracing-1.x Badge](https://img.shields.io/badge/OpenTracing--1.x-enabled-blue.svg)](http://opentracing.io) diff --git a/README_ZH.md b/README_ZH.md index 6a274fc04..40d8541f4 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -7,7 +7,8 @@ Apache SkyWalking | [English](README.md) 其核心是个分布式追踪系统。 [![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) -[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/AsfSkyWalking) +[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=social&label=Stars)](https://github.com/apache/incubator-skywalking) +[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=social&label=Follow)](https://twitter.com/AsfSkyWalking) [![Join the chat at https://gitter.im/openskywalking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) [![OpenTracing-1.x Badge](https://img.shields.io/badge/OpenTracing--1.x-enabled-blue.svg)](http://opentracing.io) From 7a8afc5bc040325b98af8339f5cf5c108d9bf4ac Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Mon, 15 Jan 2018 09:33:50 +0800 Subject: [PATCH 17/18] Change layout. --- README.md | 3 ++- README_ZH.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1730de150..f3e1e98b0 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ Apache SkyWalking | [中文](README_ZH.md) microservices, cloud native and container-based (Docker, K8s, Mesos) architectures. Underlying technology is a distributed tracing system. -[![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) [![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=social&label=Stars)](https://github.com/apache/incubator-skywalking) [![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=social&label=Follow)](https://twitter.com/AsfSkyWalking) + +[![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) [![Join the chat at https://gitter.im/sky-walking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) [![OpenTracing-1.x Badge](https://img.shields.io/badge/OpenTracing--1.x-enabled-blue.svg)](http://opentracing.io) diff --git a/README_ZH.md b/README_ZH.md index 40d8541f4..371c61f9e 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -6,9 +6,10 @@ Apache SkyWalking | [English](README.md) **SkyWalking**: 针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native和容器化(Docker, K8s, Mesos)架构, 其核心是个分布式追踪系统。 -[![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) [![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=social&label=Stars)](https://github.com/apache/incubator-skywalking) [![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=social&label=Follow)](https://twitter.com/AsfSkyWalking) + +[![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) [![Join the chat at https://gitter.im/openskywalking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) [![OpenTracing-1.x Badge](https://img.shields.io/badge/OpenTracing--1.x-enabled-blue.svg)](http://opentracing.io) From bcffa44ad421c96ddf03ab3e0e62111bdc6cc312 Mon Sep 17 00:00:00 2001 From: wu-sheng Date: Mon, 15 Jan 2018 09:59:09 +0800 Subject: [PATCH 18/18] Update badges. --- README.md | 4 ++-- README_ZH.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f3e1e98b0..5ba47c4d7 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ Apache SkyWalking | [中文](README_ZH.md) microservices, cloud native and container-based (Docker, K8s, Mesos) architectures. Underlying technology is a distributed tracing system. -[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=social&label=Stars)](https://github.com/apache/incubator-skywalking) -[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=social&label=Follow)](https://twitter.com/AsfSkyWalking) +[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=for-the-badge&label=Stars&logo=github)](https://github.com/apache/incubator-skywalking) +[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking) [![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) [![Join the chat at https://gitter.im/sky-walking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) diff --git a/README_ZH.md b/README_ZH.md index 371c61f9e..06dd40de7 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -6,8 +6,8 @@ Apache SkyWalking | [English](README.md) **SkyWalking**: 针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native和容器化(Docker, K8s, Mesos)架构, 其核心是个分布式追踪系统。 -[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=social&label=Stars)](https://github.com/apache/incubator-skywalking) -[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=social&label=Follow)](https://twitter.com/AsfSkyWalking) +[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=for-the-badge&label=Stars&logo=github)](https://github.com/apache/incubator-skywalking) +[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking) [![Build Status](https://travis-ci.org/apache/incubator-skywalking.svg?branch=master)](https://travis-ci.org/apache/incubator-skywalking) [![Join the chat at https://gitter.im/openskywalking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby)