From 099877c2ce7b072f499123daf3d4cc51520dc151 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sun, 17 Sep 2017 07:54:25 +0800 Subject: [PATCH 01/12] Prepare for 3.2 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 | 4 ++-- apm-collector/apm-collector-agentregister/pom.xml | 4 ++-- apm-collector/apm-collector-agentserver/pom.xml | 4 ++-- apm-collector/apm-collector-agentstream/pom.xml | 4 ++-- apm-collector/apm-collector-boot/pom.xml | 2 +- apm-collector/apm-collector-client/pom.xml | 4 ++-- apm-collector/apm-collector-cluster/pom.xml | 4 ++-- apm-collector/apm-collector-core/pom.xml | 4 ++-- apm-collector/apm-collector-queue/pom.xml | 4 ++-- apm-collector/apm-collector-remote/pom.xml | 4 ++-- apm-collector/apm-collector-server/pom.xml | 4 ++-- apm-collector/apm-collector-storage/pom.xml | 4 ++-- apm-collector/apm-collector-stream/pom.xml | 4 ++-- apm-collector/apm-collector-ui/pom.xml | 4 ++-- 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 +- apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/pom.xml | 2 +- apm-sniffer/apm-sdk-plugin/motan-plugin/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/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 +- 57 files changed, 72 insertions(+), 72 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 490eb1507..28b322692 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-2017 + 3.2.1-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 5b5db0279..09bc63374 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-2017 + 3.2.1-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 7d0aa0671..19b714430 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-2017 + 3.2.1-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 227bfbe3f..085423e67 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-2017 + 3.2.1-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 a4a5a4ad8..2f3312b12 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-application-toolkit/pom.xml b/apm-application-toolkit/pom.xml index 0399f5766..aa26f5681 100644 --- a/apm-application-toolkit/pom.xml +++ b/apm-application-toolkit/pom.xml @@ -3,7 +3,7 @@ apm org.skywalking - 3.2-2017 + 3.2.1-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 3e84c4e15..88e5eb7ae 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-2017 + 3.2.1-2017 4.0.0 @@ -34,4 +34,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-agentregister/pom.xml b/apm-collector/apm-collector-agentregister/pom.xml index da7f97c64..923c9f796 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-2017 + 3.2.1-2017 4.0.0 @@ -34,4 +34,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-agentserver/pom.xml b/apm-collector/apm-collector-agentserver/pom.xml index 8f174702d..6c0bbc0c3 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-2017 + 3.2.1-2017 4.0.0 @@ -39,4 +39,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-agentstream/pom.xml b/apm-collector/apm-collector-agentstream/pom.xml index b9f463f33..5f4599707 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-2017 + 3.2.1-2017 4.0.0 @@ -44,4 +44,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-boot/pom.xml b/apm-collector/apm-collector-boot/pom.xml index a377173c0..bb0b620fd 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-collector/apm-collector-client/pom.xml b/apm-collector/apm-collector-client/pom.xml index 1f6b17431..1b177144e 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-2017 + 3.2.1-2017 4.0.0 @@ -60,4 +60,4 @@ 1.4.0 - \ No newline at end of file + diff --git a/apm-collector/apm-collector-cluster/pom.xml b/apm-collector/apm-collector-cluster/pom.xml index c34df934f..82f3d9310 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-2017 + 3.2.1-2017 4.0.0 @@ -24,4 +24,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-core/pom.xml b/apm-collector/apm-collector-core/pom.xml index 8c3d9f630..b31b06433 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-2017 + 3.2.1-2017 4.0.0 @@ -24,4 +24,4 @@ 2.8.1 - \ No newline at end of file + diff --git a/apm-collector/apm-collector-queue/pom.xml b/apm-collector/apm-collector-queue/pom.xml index 3aceb5d14..9dc2dc669 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-2017 + 3.2.1-2017 4.0.0 @@ -24,4 +24,4 @@ 3.3.6 - \ No newline at end of file + diff --git a/apm-collector/apm-collector-remote/pom.xml b/apm-collector/apm-collector-remote/pom.xml index 2fdbb51ef..939c16b5f 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-2017 + 3.2.1-2017 4.0.0 @@ -101,4 +101,4 @@ - \ No newline at end of file + diff --git a/apm-collector/apm-collector-server/pom.xml b/apm-collector/apm-collector-server/pom.xml index 449bae0f4..677a9ccda 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-2017 + 3.2.1-2017 4.0.0 @@ -38,4 +38,4 @@ ${jetty.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-storage/pom.xml b/apm-collector/apm-collector-storage/pom.xml index 2ba5f03ce..0de08342d 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-2017 + 3.2.1-2017 4.0.0 @@ -29,4 +29,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-stream/pom.xml b/apm-collector/apm-collector-stream/pom.xml index f7e8bd960..912da0a69 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-2017 + 3.2.1-2017 4.0.0 @@ -44,4 +44,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/apm-collector-ui/pom.xml b/apm-collector/apm-collector-ui/pom.xml index ff4bb505b..22ffc224a 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-2017 + 3.2.1-2017 4.0.0 @@ -34,4 +34,4 @@ ${project.version} - \ No newline at end of file + diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml index f9e5eaa39..886e82c4a 100644 --- a/apm-collector/pom.xml +++ b/apm-collector/pom.xml @@ -21,7 +21,7 @@ apm org.skywalking - 3.2-2017 + 3.2.1-2017 apm-collector pom diff --git a/apm-commons/apm-datacarrier/pom.xml b/apm-commons/apm-datacarrier/pom.xml index 098bf428e..a527c94dd 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-commons/apm-logging-api/pom.xml b/apm-commons/apm-logging-api/pom.xml index 83742c7f8..894279438 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-commons/apm-util/pom.xml b/apm-commons/apm-util/pom.xml index 899fe9e6d..e55a47f67 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-commons/pom.xml b/apm-commons/pom.xml index aaaffca57..765473a04 100644 --- a/apm-commons/pom.xml +++ b/apm-commons/pom.xml @@ -3,7 +3,7 @@ apm org.skywalking - 3.2-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-network/pom.xml b/apm-network/pom.xml index be4db2912..2970a2486 100644 --- a/apm-network/pom.xml +++ b/apm-network/pom.xml @@ -5,7 +5,7 @@ apm org.skywalking - 3.2-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-sniffer/apm-agent-core/pom.xml b/apm-sniffer/apm-agent-core/pom.xml index 6749551f6..ab6ac6dad 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-2017 + 3.2.1-2017 apm-agent-core diff --git a/apm-sniffer/apm-agent/pom.xml b/apm-sniffer/apm-agent/pom.xml index d53be9601..ed785bfff 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-2017 + 3.2.1-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 8723e29f8..1583fe74a 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-2017 + 3.2.1-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 c824d4a07..0bd84b815 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-2017 + 3.2.1-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 a6079e392..f7521100e 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-2017 + 3.2.1-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 d7626eb25..330530fd5 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-2017 + 3.2.1-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 5d82bffae..e8d38f705 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-2017 + 3.2.1-2017 apm-jedis-2.x-plugin 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 db4e71570..0c5e9a3d9 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-2017 + 3.2.1-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 997243683..09b97b6f7 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-2017 + 3.2.1-2017 4.0.0 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 17595a7b8..731c7220d 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml index 1b06f19d8..2e794140a 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-2017 + 3.2.1-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 87974672d..a8dae878b 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-2017 + 3.2.1-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 c588b50f7..619ee00f3 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-2017 + 3.2.1-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 d399599fb..6d7f1567c 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-2017 + 3.2.1-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 bb88c3441..16336edff 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-2017 + 3.2.1-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 819b31547..9495db4b9 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-2017 + 3.2.1-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 874a25df4..ccb60dc84 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-2017 + 3.2.1-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 dc3d3a38a..84a2360ee 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-2017 + 3.2.1-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 ceedb86a9..889ff9044 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-2017 + 3.2.1-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 02a6d44c2..60ea7640d 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-2017 + 3.2.1-2017 spring-cloud 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 471faa920..d69810fa4 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-sniffer/apm-test-tools/pom.xml b/apm-sniffer/apm-test-tools/pom.xml index e69ef8f08..b910073ca 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-2017 + 3.2.1-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 944355f62..033d00ef6 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-2017 + 3.2.1-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 4efe0fff1..a1a062280 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-2017 + 3.2.1-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 6b38dd271..03b1abbb2 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-2017 + 3.2.1-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 b4ca9cfa8..3d82f8e4e 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-2017 + 3.2.1-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 ff76498e8..e2364ecfb 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-2017 + 3.2.1-2017 4.0.0 diff --git a/apm-sniffer/apm-toolkit-activation/pom.xml b/apm-sniffer/apm-toolkit-activation/pom.xml index 1aadcdcbb..13128e73f 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-2017 + 3.2.1-2017 4.0.0 pom diff --git a/apm-sniffer/pom.xml b/apm-sniffer/pom.xml index 74b08f650..383499174 100644 --- a/apm-sniffer/pom.xml +++ b/apm-sniffer/pom.xml @@ -5,7 +5,7 @@ apm org.skywalking - 3.2-2017 + 3.2.1-2017 4.0.0 @@ -28,7 +28,7 @@ org.skywalking apm-util - 3.2-2017 + 3.2.1-2017 diff --git a/docker-compose.yml b/docker-compose.yml index 008c0b393..023b59164 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-2017 + image: skywalking/skywalking-ui:3.2.1-2017 expose: - "8080" ports: @@ -15,7 +15,7 @@ services: - COLLECTOR_SERVERS=skywalking-collector:10800 skywalking-collector: - image: skywalking/skywalking-collector:3.2-2017 + image: skywalking/skywalking-collector:3.2.1-2017 expose: - "10800" - "11800" diff --git a/pom.xml b/pom.xml index 6a624830a..26b309587 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.skywalking apm - 3.2-2017 + 3.2.1-2017 From 1030ec3a70add96f4b0ee9dbfc4169b939d5b982 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sun, 17 Sep 2017 08:15:28 +0800 Subject: [PATCH 02/12] Update README --- README_ZH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_ZH.md b/README_ZH.md index 124bece1b..7b42034bf 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -18,7 +18,7 @@ Sky Walking | [Engligh](README.md) * [中间件,框架与类库支持列表](https://github.com/wu-sheng/sky-walking/wiki/3.2-supported-list). * 手动探针 * [使用OpenTracing手动探针API](http://opentracing.io/documentation/pages/supported-tracers) - * 使用 **@Trace** 标注追踪业务方法 + * 使用 [**@Trace**](https://github.com/wu-sheng/sky-walking/wiki/sky-walking-application-toolkit-trace-chn) 标注追踪业务方法 * 将 traceId 集成到 log4j, log4j2 或 logback这些日志组件中 * 纯Java后端Collector实现,提供RESTful和gRPC接口。兼容接受其他语言探针发送数据 * [如何将探针的Metric和Trace数据上传到Collector?]() From 9f4bcf7e3eaba782a3772a6c896ee204532177a2 Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 18 Sep 2017 21:56:53 +0800 Subject: [PATCH 03/12] Optimise ID encoding. Only do once for every ID object. --- .../agent/core/context/ContextCarrier.java | 2 +- .../core/context/ids/DistributedTraceId.java | 2 +- .../apm/agent/core/context/ids/ID.java | 20 ++++++++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java index 82dd3c5c3..3854e1336 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java @@ -68,7 +68,7 @@ public class ContextCarrier implements Serializable { public String serialize() { if (this.isValid()) { return StringUtil.join('|', - this.getTraceSegmentId().toBase64(), + this.getTraceSegmentId().encode(), this.getSpanId() + "", this.getParentApplicationInstanceId() + "", this.getEntryApplicationInstanceId() + "", diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java index f6e5623ef..5dd702453 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java @@ -27,7 +27,7 @@ public abstract class DistributedTraceId { } public String toBase64() { - return id.toBase64(); + return id.encode(); } @Override diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java index db936aee5..91d1926cd 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java @@ -15,29 +15,31 @@ public class ID { private long part1; private long part2; private long part3; + private String encoding; public ID(long part1, long part2, long part3) { this.part1 = part1; this.part2 = part2; this.part3 = part3; + this.encoding = null; } - public ID(String base64String) { + public ID(String encodingString) { int index = 0; for (int part = 0; part < 3; part++) { String encodedString; - char potentialTypeChar = base64String.charAt(index); + char potentialTypeChar = encodingString.charAt(index); long value; if (potentialTypeChar == '#') { - encodedString = base64String.substring(index + 1, index + 5); + encodedString = encodingString.substring(index + 1, index + 5); index += 5; value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(0); } else if (potentialTypeChar == '$') { - encodedString = base64String.substring(index + 1, index + 9); + encodedString = encodingString.substring(index + 1, index + 9); index += 9; value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().get(0); } else { - encodedString = base64String.substring(index, index + 12); + encodedString = encodingString.substring(index, index + 12); index += 12; value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asLongBuffer().get(0); } @@ -53,8 +55,12 @@ public class ID { } } - public String toBase64() { - return long2Base64(part1) + long2Base64(part2) + long2Base64(part3); + public String encode() { + if (encoding == null) { + encoding = long2Base64(part1) + long2Base64(part2) + long2Base64(part3); + } else { + return encoding; + } } private String long2Base64(long partN) { From cd1d3a3bcc4dd86f2f0c72bac0bcffabe8ec82d4 Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 18 Sep 2017 21:57:33 +0800 Subject: [PATCH 04/12] Fix compile issue. --- .../java/org/skywalking/apm/agent/core/context/ids/ID.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java index 91d1926cd..c17efe7fb 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java @@ -58,9 +58,8 @@ public class ID { public String encode() { if (encoding == null) { encoding = long2Base64(part1) + long2Base64(part2) + long2Base64(part3); - } else { - return encoding; } + return encoding; } private String long2Base64(long partN) { From e0d50533c4b0dbf617c32a0e398378af4afac352 Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 18 Sep 2017 23:12:42 +0800 Subject: [PATCH 05/12] New context carrier. --- .../apm/agent/core/conf/Config.java | 8 --- .../apm/agent/core/context/CarrierItem.java | 51 ++++++++++++++ .../agent/core/context/ContextCarrier.java | 11 ++- .../agent/core/context/SW3CarrierItem.java | 19 ++++++ .../core/context/TraceContextCarrierItem.java | 12 ++++ .../core/context/ids/DistributedTraceId.java | 2 +- .../apm/agent/core/context/ids/ID.java | 57 ++-------------- .../apm/plugin/dubbo/DubboInterceptor.java | 68 ++++--------------- .../apm/plugin/dubbox/BugFixActive.java | 27 -------- .../apm/plugin/dubbox/SWBaseBean.java | 24 ------- .../plugin/dubbo/DubboInterceptorTest.java | 1 - .../v4/HttpClientExecuteInterceptor.java | 8 ++- .../motan/MotanConsumerInterceptor.java | 8 ++- .../motan/MotanProviderInterceptor.java | 11 ++- .../tomcat78x/TomcatInvokeInterceptor.java | 18 +++-- .../SkywalkingSpanActivationTest.java | 3 - 16 files changed, 143 insertions(+), 185 deletions(-) create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItem.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TraceContextCarrierItem.java delete mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/BugFixActive.java delete mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/SWBaseBean.java diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java index 2ff27dda9..3857a5705 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java @@ -134,13 +134,5 @@ public class Config { */ public static boolean TRACE_PARAM = false; } - - public static class Propagation { - - /** - * The header name of cross process propagation data. - */ - public static String HEADER_NAME = "sw3"; - } } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItem.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItem.java new file mode 100644 index 000000000..b67ca178c --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItem.java @@ -0,0 +1,51 @@ +package org.skywalking.apm.agent.core.context; + +import java.util.Iterator; + +/** + * @author wusheng + */ +public class CarrierItem implements Iterator { + private String headKey; + private String headValue; + private CarrierItem next; + + public CarrierItem(String headKey, String headValue) { + this.headKey = headKey; + this.headValue = headValue; + next = null; + } + + public CarrierItem(String headKey, String headValue, CarrierItem next) { + this.headKey = headKey; + this.headValue = headValue; + this.next = next; + } + + public String getHeadKey() { + return headKey; + } + + public String getHeadValue() { + return headValue; + } + + public void setHeadValue(String headValue) { + this.headValue = headValue; + } + + @Override + public boolean hasNext() { + return next != null; + } + + @Override + public CarrierItem next() { + return next; + } + + @Override + public void remove() { + + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java index 3854e1336..8ff02ad05 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java @@ -59,13 +59,18 @@ public class ContextCarrier implements Serializable { */ private DistributedTraceId primaryDistributedTraceId; + public CarrierItem items() { + SW3CarrierItem carrierItem = new SW3CarrierItem(this, null); + return carrierItem; + } + /** * Serialize this {@link ContextCarrier} to a {@link String}, * with '|' split. * * @return the serialization string. */ - public String serialize() { + String serialize() { if (this.isValid()) { return StringUtil.join('|', this.getTraceSegmentId().encode(), @@ -75,7 +80,7 @@ public class ContextCarrier implements Serializable { this.getPeerHost(), this.getEntryOperationName(), this.getParentOperationName(), - this.getPrimaryDistributedTraceId().toBase64()); + this.getPrimaryDistributedTraceId().encode()); } else { return ""; } @@ -86,7 +91,7 @@ public class ContextCarrier implements Serializable { * * @param text carries {@link #traceSegmentId} and {@link #spanId}, with '|' split. */ - public ContextCarrier deserialize(String text) { + ContextCarrier deserialize(String text) { if (text != null) { String[] parts = text.split("\\|", 8); if (parts.length == 8) { diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java new file mode 100644 index 000000000..57cea7d9a --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java @@ -0,0 +1,19 @@ +package org.skywalking.apm.agent.core.context; + +/** + * @author wusheng + */ +public class SW3CarrierItem extends CarrierItem { + private static final String HEAD_NAME = "sw3"; + private ContextCarrier carrier; + + public SW3CarrierItem(ContextCarrier carrier, CarrierItem next) { + super(HEAD_NAME, carrier.serialize(), next); + this.carrier = carrier; + } + + @Override + public void setHeadValue(String headValue) { + carrier.deserialize(headValue); + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TraceContextCarrierItem.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TraceContextCarrierItem.java new file mode 100644 index 000000000..0da4f8261 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TraceContextCarrierItem.java @@ -0,0 +1,12 @@ +package org.skywalking.apm.agent.core.context; + +/** + * @author wusheng + */ +public class TraceContextCarrierItem extends CarrierItem { + private static final String HEAD_NAME = "Trace-Context"; + + public TraceContextCarrierItem(String headValue, CarrierItem next) { + super(HEAD_NAME, headValue, next); + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java index 5dd702453..980621bc5 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/DistributedTraceId.java @@ -26,7 +26,7 @@ public abstract class DistributedTraceId { this.id = new ID(id); } - public String toBase64() { + public String encode() { return id.encode(); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java index c17efe7fb..4a5369451 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java @@ -1,17 +1,11 @@ package org.skywalking.apm.agent.core.context.ids; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import org.skywalking.apm.agent.core.context.ids.base64.Base64; import org.skywalking.apm.network.proto.UniqueId; /** * @author wusheng */ public class ID { - private static final Base64.Encoder ENCODER = Base64.getEncoder(); - private static final Base64.Decoder DECODER = Base64.getDecoder(); - private long part1; private long part2; private long part3; @@ -25,31 +19,15 @@ public class ID { } public ID(String encodingString) { + String[] idParts = encodingString.split(".", 3); int index = 0; for (int part = 0; part < 3; part++) { - String encodedString; - char potentialTypeChar = encodingString.charAt(index); - long value; - if (potentialTypeChar == '#') { - encodedString = encodingString.substring(index + 1, index + 5); - index += 5; - value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(0); - } else if (potentialTypeChar == '$') { - encodedString = encodingString.substring(index + 1, index + 9); - index += 9; - value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().get(0); - } else { - encodedString = encodingString.substring(index, index + 12); - index += 12; - value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asLongBuffer().get(0); - } - if (part == 0) { - part1 = value; + part1 = Long.parseLong(idParts[part]); } else if (part == 1) { - part2 = value; + part2 = Long.parseLong(idParts[part]); } else { - part3 = value; + part3 = Long.parseLong(idParts[part]); } } @@ -57,36 +35,11 @@ public class ID { public String encode() { if (encoding == null) { - encoding = long2Base64(part1) + long2Base64(part2) + long2Base64(part3); + encoding = toString(); } return encoding; } - private String long2Base64(long partN) { - if (partN < 0) { - throw new IllegalArgumentException("negative value."); - } - if (partN < 32768) { - // 0 - 32767 - // "#" as a prefix of a short value with base64 encoding. - byte[] data = new byte[2]; - ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().put((short)partN); - return '#' + ENCODER.encodeToString(data); - } else if (partN <= 2147483647) { - // 32768 - 2147483647 - // "$" as a prefix of an integer value (greater than a short) with base64 encoding. - byte[] data = new byte[4]; - ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().put((int)partN); - return '$' + ENCODER.encodeToString(data); - } else { - // > 2147483647 - // a long value (greater than an integer) - byte[] data = new byte[8]; - ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN).asLongBuffer().put(partN); - return ENCODER.encodeToString(data); - } - } - @Override public String toString() { return part1 + "." + part2 + '.' + part3; } diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java index 352b85bfa..4a0a05d62 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java @@ -6,7 +6,7 @@ import com.alibaba.dubbo.rpc.Invoker; import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcContext; import java.lang.reflect.Method; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -16,28 +16,20 @@ 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; -import org.skywalking.apm.plugin.dubbox.BugFixActive; -import org.skywalking.apm.plugin.dubbox.SWBaseBean; /** * {@link DubboInterceptor} define how to enhance class {@link com.alibaba.dubbo.monitor.support.MonitorFilter#invoke(Invoker, * Invocation)}. the trace context transport to the provider side by {@link RpcContext#attachments}.but all the version - * of dubbo framework below 2.8.3 don't support {@link RpcContext#attachments}, we support another way to support it. it - * is that all request parameters of dubbo service need to extend {@link SWBaseBean}, and {@link DubboInterceptor} will - * inject the trace context data to the {@link SWBaseBean} bean and extract the trace context data from {@link - * SWBaseBean}, or the trace context data will not transport to the provider side. + * of dubbo framework below 2.8.3 don't support {@link RpcContext#attachments}, we support another way to support it. * * @author zhangxin */ public class DubboInterceptor implements InstanceMethodsAroundInterceptor { - /** - *

Consumer:

The serialized trace context data will inject the first param that extend {@link SWBaseBean} - * of dubbo service if the method {@link BugFixActive#active()} be called. or the serialized context data will + *

Consumer:

The serialized trace context data will * inject to the {@link RpcContext#attachments} for transport to provider side. *

- *

Provider:

The serialized trace context data will extract from the first param that extend {@link - * SWBaseBean} of dubbo service if the method {@link BugFixActive#active()} be called. or it will extract from + *

Provider:

The serialized trace context data will extract from * {@link RpcContext#attachments}. current trace segment will ref if the serialize context data is not null. */ @Override @@ -56,20 +48,19 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor { if (isConsumer) { final ContextCarrier contextCarrier = new ContextCarrier(); span = ContextManager.createExitSpan(generateOperationName(requestURL, invocation), contextCarrier, host + ":" + port); - if (!BugFixActive.isActive()) { - //invocation.getAttachments().put("contextData", contextDataStr); - //@see https://github.com/alibaba/dubbo/blob/dubbo-2.5.3/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/RpcInvocation.java#L154-L161 - rpcContext.getAttachments().put(Config.Plugin.Propagation.HEADER_NAME, contextCarrier.serialize()); - } else { - fix283SendNoAttachmentIssue(invocation, contextCarrier); + //invocation.getAttachments().put("contextData", contextDataStr); + //@see https://github.com/alibaba/dubbo/blob/dubbo-2.5.3/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/RpcInvocation.java#L154-L161 + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + rpcContext.getAttachments().put(next.getHeadKey(), next.getHeadValue()); } } else { - - ContextCarrier contextCarrier; - if (!BugFixActive.isActive()) { - contextCarrier = new ContextCarrier().deserialize(rpcContext.getAttachment(Config.Plugin.Propagation.HEADER_NAME)); - } else { - contextCarrier = fix283RecvNoAttachmentIssue(invocation); + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + next.setHeadValue(rpcContext.getAttachment(next.getHeadKey())); } span = ContextManager.createEntrySpan(generateOperationName(requestURL, invocation), contextCarrier); @@ -143,33 +134,4 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor { requestURL.append(generateOperationName(url, invocation)); return requestURL.toString(); } - - /** - * Set the trace context. - * - * @param contextCarrier {@link ContextCarrier}. - */ - private void fix283SendNoAttachmentIssue(Invocation invocation, ContextCarrier contextCarrier) { - for (Object parameter : invocation.getArguments()) { - if (parameter instanceof SWBaseBean) { - ((SWBaseBean)parameter).setTraceContext(contextCarrier.serialize()); - return; - } - } - } - - /** - * Fetch the trace context by using {@link Invocation#getArguments()}. - * - * @return trace context data. - */ - private ContextCarrier fix283RecvNoAttachmentIssue(Invocation invocation) { - for (Object parameter : invocation.getArguments()) { - if (parameter instanceof SWBaseBean) { - return new ContextCarrier().deserialize(((SWBaseBean)parameter).getTraceContext()); - } - } - - return null; - } } diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/BugFixActive.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/BugFixActive.java deleted file mode 100644 index 82e8dbb60..000000000 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/BugFixActive.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.skywalking.apm.plugin.dubbox; - -/** - * {@link BugFixActive#active} is an flag that present the dubbox version is below 2.8.3, The version 2.8.3 of dubbox - * don't support attachment. so skywalking provided another way to support the function that transport the serialized - * context data. The way is that all parameters of dubbo service need to extend {@link SWBaseBean}, {@link - * org.skywalking.apm.plugin.dubbo.DubboInterceptor} fetch the serialized context data by using {@link - * SWBaseBean#getTraceContext()}. - * - * @author zhangxin - */ -public final class BugFixActive { - - private static boolean ACTIVE = false; - - /** - * Set active status, before startup dubbo remote. - */ - public static void active() { - BugFixActive.ACTIVE = true; - } - - public static boolean isActive() { - return BugFixActive.ACTIVE; - } - -} diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/SWBaseBean.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/SWBaseBean.java deleted file mode 100644 index 1f1ac39af..000000000 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbox/SWBaseBean.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.skywalking.apm.plugin.dubbox; - -import java.io.Serializable; - -/** - * All the request parameter of dubbox service need to extend {@link SWBaseBean} to transport - * the serialized trace context to the provider side if the version of dubbox is below 2.8.3. - * - * @author zhangxin - */ -public class SWBaseBean implements Serializable { - /** - * Serialized trace context. - */ - private String traceContext; - - public String getTraceContext() { - return traceContext; - } - - public void setTraceContext(String traceContext) { - this.traceContext = traceContext; - } -} diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java index 84ef579f2..16b61619b 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java @@ -7,7 +7,6 @@ import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcContext; import java.util.List; import org.hamcrest.CoreMatchers; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; diff --git a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java index 2b0d6ccec..601b083cc 100644 --- a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java @@ -6,7 +6,7 @@ import java.net.URL; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -42,7 +42,11 @@ public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc Tags.HTTP.METHOD.set(span, httpRequest.getRequestLine().getMethod()); SpanLayer.asHttp(span); - httpRequest.setHeader(Config.Plugin.Propagation.HEADER_NAME, contextCarrier.serialize()); + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + httpRequest.setHeader(next.getHeadKey(), next.getHeadValue()); + } } @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java index 890ff43f6..5c6237e50 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java @@ -4,7 +4,7 @@ import com.weibo.api.motan.rpc.Request; import com.weibo.api.motan.rpc.Response; import com.weibo.api.motan.rpc.URL; import java.lang.reflect.Method; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -42,7 +42,11 @@ public class MotanConsumerInterceptor implements InstanceConstructorInterceptor, span.setComponent(ComponentsDefine.MOTAN); Tags.URL.set(span, url.getIdentity()); SpanLayer.asRPCFramework(span); - request.setAttachment(Config.Plugin.Propagation.HEADER_NAME, contextCarrier.serialize()); + CarrierItem items = contextCarrier.items(); + while(items.hasNext()){ + CarrierItem next = items.next(); + request.setAttachment(next.getHeadKey(), next.getHeadValue()); + } } } diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java index b77377cf6..838a42e2d 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java @@ -3,7 +3,7 @@ package org.skywalking.apm.plugin.motan; import com.weibo.api.motan.rpc.Request; import com.weibo.api.motan.rpc.Response; import java.lang.reflect.Method; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; @@ -27,8 +27,13 @@ public class MotanProviderInterceptor implements InstanceMethodsAroundIntercepto @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { Request request = (Request)allArguments[0]; - String serializedContextData = request.getAttachments().get(Config.Plugin.Propagation.HEADER_NAME); - ContextCarrier contextCarrier = new ContextCarrier().deserialize(serializedContextData); + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem items = contextCarrier.items(); + while(items.hasNext()){ + CarrierItem next = items.next(); + next.setHeadValue(request.getAttachments().get(next.getHeadKey())); + } + AbstractSpan span = ContextManager.createEntrySpan(generateViewPoint(request), contextCarrier); SpanLayer.asRPCFramework(span); span.setComponent(ComponentsDefine.MOTAN); diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java index 90348dd3e..8aafaee96 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java @@ -3,7 +3,7 @@ package org.skywalking.apm.plugin.tomcat78x; import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -16,9 +16,9 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptR import org.skywalking.apm.network.trace.component.ComponentsDefine; /** - * {@link TomcatInvokeInterceptor} fetch the serialized context data by using {@link HttpServletRequest#getHeader(String)}. - * The {@link TraceSegment#refs} of current trace segment will reference to the trace - * segment id of the previous level if the serialized context is not null. + * {@link TomcatInvokeInterceptor} fetch the serialized context data by using {@link + * HttpServletRequest#getHeader(String)}. The {@link TraceSegment#refs} of current trace segment will reference to the + * trace segment id of the previous level if the serialized context is not null. */ public class TomcatInvokeInterceptor implements InstanceMethodsAroundInterceptor { @@ -36,8 +36,14 @@ public class TomcatInvokeInterceptor implements InstanceMethodsAroundInterceptor @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { HttpServletRequest request = (HttpServletRequest)allArguments[0]; - String tracingHeaderValue = request.getHeader(Config.Plugin.Propagation.HEADER_NAME); - ContextCarrier contextCarrier = new ContextCarrier().deserialize(tracingHeaderValue); + ContextCarrier contextCarrier = new ContextCarrier(); + + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + next.setHeadValue(request.getHeader(next.getHeadKey())); + } + AbstractSpan span = ContextManager.createEntrySpan(request.getRequestURI(), contextCarrier); Tags.URL.set(span, request.getRequestURL().toString()); Tags.HTTP.METHOD.set(span, request.getMethod()); diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java index c8c5e9eec..27df5bc10 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java @@ -4,7 +4,6 @@ import io.opentracing.Tracer; import io.opentracing.tag.Tags; import java.util.HashMap; import java.util.List; -import java.util.Map; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -18,7 +17,6 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; 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.SegmentRefHelper; import org.skywalking.apm.agent.test.tools.AgentServiceRule; import org.skywalking.apm.agent.test.tools.SegmentStorage; import org.skywalking.apm.agent.test.tools.SegmentStoragePoint; @@ -34,7 +32,6 @@ import org.skywalking.apm.toolkit.activation.opentracing.tracer.SkywalkingTracer import org.skywalking.apm.toolkit.opentracing.SkywalkingContinuation; import org.skywalking.apm.toolkit.opentracing.SkywalkingSpan; import org.skywalking.apm.toolkit.opentracing.SkywalkingSpanBuilder; -import org.skywalking.apm.toolkit.opentracing.SkywalkingTracer; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; From 1f2076aa50e784e7e7c8c9b1fe69b1492dc157f9 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Tue, 19 Sep 2017 13:17:38 +0800 Subject: [PATCH 06/12] fix start failed issue --- apm-collector/apm-collector-boot/bin/collector-service.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apm-collector/apm-collector-boot/bin/collector-service.sh b/apm-collector/apm-collector-boot/bin/collector-service.sh index 4babe32e6..993fa0217 100755 --- a/apm-collector/apm-collector-boot/bin/collector-service.sh +++ b/apm-collector/apm-collector-boot/bin/collector-service.sh @@ -12,7 +12,7 @@ if [ ! -d "${COLLECTOR_HOME}/logs" ]; then fi _RUNJAVA=${JAVA_HOME}/bin/java -[ -z "$JAVA_HOME" ] && _RUNJAVA=`java` +[ -z "$JAVA_HOME" ] && _RUNJAVA=java CLASSPATH="$COLLECTOR_HOME/config:$CLASSPATH" for i in "$COLLECTOR_HOME"/libs/*.jar @@ -21,6 +21,7 @@ do done COLLECTOR_OPTIONS=" -Dcollector.logDir=$COLLECTOR_LOGS_DIR" echo "Starting collector...." + eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} ${COLLECTOR_OPTIONS} -classpath $CLASSPATH org.skywalking.apm.collector.boot.CollectorBootStartUp \ 2>${COLLECTOR_LOGS_DIR}/collector.log 1> /dev/null &" From 3e2e294d8a27dc4e74bebd1f23ab3f4f0c7ef181 Mon Sep 17 00:00:00 2001 From: wusheng Date: Tue, 19 Sep 2017 19:40:44 +0800 Subject: [PATCH 07/12] Fix some compile issue. (not finished.) --- .../http/v9/DefaultHttpClientInterceptor.java | 17 +++++++++-------- .../plugin/motan/MotanConsumerInterceptor.java | 2 +- .../plugin/motan/MotanProviderInterceptor.java | 2 +- .../plugin/okhttp/v3/RealCallInterceptor.java | 13 ++++++++----- .../apm/plugin/resin/v3/ResinV3Interceptor.java | 11 ++++++++--- .../apm/plugin/resin/v4/ResinV4Interceptor.java | 10 +++++++--- 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java index 89219cbac..bdd4e0f76 100644 --- a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java @@ -6,13 +6,13 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.net.URL; -import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -37,7 +37,6 @@ public class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc * port, kind, component, url from {@link feign.Request}. * Through the reflection of the way, set the http header of context data into {@link feign.Request#headers}. * - * * @param method * @param result change this result, if you want to truncate the method. * @throws Throwable @@ -55,9 +54,6 @@ public class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc Tags.URL.set(span, url.getPath()); SpanLayer.asHttp(span); - List contextCollection = new ArrayList(); - contextCollection.add(contextCarrier.serialize()); - Field headersField = Request.class.getDeclaredField("headers"); Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); @@ -65,7 +61,13 @@ public class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc headersField.setAccessible(true); Map> headers = new LinkedHashMap>(); - headers.put(Config.Plugin.Propagation.HEADER_NAME, contextCollection); + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + List contextCollection = new LinkedList(); + contextCollection.add(next.getHeadValue()); + headers.put(next.getHeadKey(), contextCollection); + } headers.putAll(request.headers()); headersField.set(request, Collections.unmodifiableMap(headers)); @@ -76,7 +78,6 @@ public class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc * the server. * Finish the {@link AbstractSpan}. * - * * @param method * @param ret the method's original return value. * @return diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java index 5c6237e50..bb7c2cf4c 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java @@ -43,7 +43,7 @@ public class MotanConsumerInterceptor implements InstanceConstructorInterceptor, Tags.URL.set(span, url.getIdentity()); SpanLayer.asRPCFramework(span); CarrierItem items = contextCarrier.items(); - while(items.hasNext()){ + while (items.hasNext()) { CarrierItem next = items.next(); request.setAttachment(next.getHeadKey(), next.getHeadValue()); } diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java index 838a42e2d..c216cdbef 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java @@ -29,7 +29,7 @@ public class MotanProviderInterceptor implements InstanceMethodsAroundIntercepto Request request = (Request)allArguments[0]; ContextCarrier contextCarrier = new ContextCarrier(); CarrierItem items = contextCarrier.items(); - while(items.hasNext()){ + while (items.hasNext()) { CarrierItem next = items.next(); next.setHeadValue(request.getAttachments().get(next.getHeadKey())); } diff --git a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java index fb48195f8..69bda7d75 100644 --- a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java @@ -8,7 +8,7 @@ import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -44,7 +44,6 @@ public class RealCallInterceptor implements InstanceMethodsAroundInterceptor, In * port, kind, component, url from {@link okhttp3.Request}. * Through the reflection of the way, set the http header of context data into {@link okhttp3.Request#headers}. * - * * @param method * @param result change this result, if you want to truncate the method. * @throws Throwable @@ -67,8 +66,13 @@ public class RealCallInterceptor implements InstanceMethodsAroundInterceptor, In modifiersField.setInt(headersField, headersField.getModifiers() & ~Modifier.FINAL); headersField.setAccessible(true); - Headers headers = request.headers().newBuilder().add(Config.Plugin.Propagation.HEADER_NAME, contextCarrier.serialize()).build(); - headersField.set(request, headers); + Headers.Builder headerBuilder = request.headers().newBuilder(); + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + headerBuilder.add(next.getHeadKey(), next.getHeadValue()); + } + headersField.set(request, headerBuilder.build()); } /** @@ -76,7 +80,6 @@ public class RealCallInterceptor implements InstanceMethodsAroundInterceptor, In * the server. * Finish the {@link AbstractSpan}. * - * * @param method * @param ret the method's original return value. * @return diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java index dbdd8293b..6c457267c 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java @@ -3,7 +3,7 @@ package org.skywalking.apm.plugin.resin.v3; import com.caucho.server.connection.CauchoRequest; import com.caucho.server.http.HttpResponse; import java.lang.reflect.Method; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -25,8 +25,13 @@ public class ResinV3Interceptor implements InstanceMethodsAroundInterceptor { @Override public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { CauchoRequest request = (CauchoRequest)allArguments[0]; - String tracingHeaderValue = request.getHeader(Config.Plugin.Propagation.HEADER_NAME); - ContextCarrier contextCarrier = new ContextCarrier().deserialize(tracingHeaderValue); + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + next.setHeadValue(request.getHeader(next.getHeadKey())); + } + AbstractSpan span = ContextManager.createEntrySpan(request.getPageURI(), contextCarrier); span.setComponent(ComponentsDefine.RESIN); Tags.URL.set(span, appendRequestURL(request)); diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java index 8e7f31ce0..68a462db0 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java @@ -3,7 +3,7 @@ package org.skywalking.apm.plugin.resin.v4; import com.caucho.server.http.CauchoRequest; import java.lang.reflect.Method; import javax.servlet.http.HttpServletResponse; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -22,8 +22,12 @@ public class ResinV4Interceptor implements InstanceMethodsAroundInterceptor { public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { CauchoRequest request = (CauchoRequest)allArguments[0]; - String tracingHeaderValue = request.getHeader(Config.Plugin.Propagation.HEADER_NAME); - ContextCarrier contextCarrier = new ContextCarrier().deserialize(tracingHeaderValue); + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem items = contextCarrier.items(); + while (items.hasNext()) { + CarrierItem next = items.next(); + next.setHeadValue(request.getHeader(next.getHeadKey())); + } AbstractSpan span = ContextManager.createEntrySpan(request.getPageURI(), contextCarrier); span.setComponent(ComponentsDefine.RESIN); Tags.URL.set(span, appendRequestURL(request)); From cc2163b7c2e4d39cfa4aadcabfe83bf9ae340ef5 Mon Sep 17 00:00:00 2001 From: wusheng Date: Tue, 19 Sep 2017 23:36:29 +0800 Subject: [PATCH 08/12] Fix compile issues. --- .../toolkit/opentracing/SkywalkingTracer.java | 74 +------------------ .../toolkit/opentracing/TextMapContext.java | 9 +-- .../agent/core/context/CarrierItemHead.java | 10 +++ .../agent/core/context/ContextCarrier.java | 4 +- .../apm/agent/core/context/ids/ID.java | 27 +++++-- .../core/context/ContextManagerTest.java | 4 +- .../apm/plugin/dubbo/DubboInterceptor.java | 12 +-- .../plugin/dubbo/DubboInterceptorTest.java | 41 +--------- .../dubbo/RequestParamForTestBelow283.java | 10 --- .../http/v9/DefaultHttpClientInterceptor.java | 6 +- .../v4/HttpClientExecuteInterceptor.java | 6 +- .../motan/MotanConsumerInterceptor.java | 6 +- .../motan/MotanProviderInterceptor.java | 6 +- .../plugin/okhttp/v3/RealCallInterceptor.java | 6 +- .../plugin/resin/v3/ResinV3Interceptor.java | 6 +- .../plugin/resin/v4/ResinV4Interceptor.java | 6 +- .../ControllerServiceMethodInterceptor.java | 14 ++-- .../async/RestExecuteInterceptor.java | 2 +- .../sync/RestExecuteInterceptor.java | 2 +- .../sync/RestRequestInterceptor.java | 10 ++- .../http/client/RestRequestInterceptor.java | 11 ++- .../tomcat78x/TomcatInvokeInterceptor.java | 6 +- .../SkywalkingTracerExtractInterceptor.java | 31 ++++++-- .../SkywalkingTracerInjectInterceptor.java | 21 +++++- 24 files changed, 143 insertions(+), 187 deletions(-) create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItemHead.java delete mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/RequestParamForTestBelow283.java diff --git a/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/SkywalkingTracer.java b/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/SkywalkingTracer.java index 0ae5db2da..0a74e4a66 100644 --- a/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/SkywalkingTracer.java +++ b/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/SkywalkingTracer.java @@ -5,64 +5,26 @@ import io.opentracing.Span; import io.opentracing.SpanContext; import io.opentracing.Tracer; import io.opentracing.propagation.Format; -import io.opentracing.propagation.TextMap; -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.util.Iterator; -import java.util.Map; /** * @author wusheng */ public class SkywalkingTracer implements Tracer { - private static String TRACE_HEAD_NAME = "sw3"; - @NeedSnifferActivation("1. ContextManager#inject" + - "2. ContextCarrier#serialize") - private String inject() { - return null; - } - - @NeedSnifferActivation("1. ContextCarrier#deserialize" + - "2. ContextManager#extract") - private void extract(String carrier) { - - } - - @Override public SpanBuilder buildSpan(String operationName) { return new SkywalkingSpanBuilder(operationName); } + @NeedSnifferActivation @Override public void inject(SpanContext spanContext, Format format, C carrier) { - if (Format.Builtin.TEXT_MAP.equals(format) || Format.Builtin.HTTP_HEADERS.equals(format)) { - ((TextMap)carrier).put(TRACE_HEAD_NAME, inject()); - } else if (Format.Builtin.BINARY.equals(format)) { - byte[] key = TRACE_HEAD_NAME.getBytes(ByteBufferContext.CHARSET); - byte[] value = inject().getBytes(ByteBufferContext.CHARSET); - ((ByteBuffer)carrier).put(key); - ((ByteBuffer)carrier).putInt(value.length); - ((ByteBuffer)carrier).put(value); - } else { - throw new IllegalArgumentException("Unsupported format: " + format); - } } + @NeedSnifferActivation @Override public SpanContext extract(Format format, C carrier) { - if (Format.Builtin.TEXT_MAP.equals(format) || Format.Builtin.HTTP_HEADERS.equals(format)) { - TextMap textMapCarrier = (TextMap)carrier; - extract(fetchContextData(textMapCarrier)); - return new TextMapContext(textMapCarrier); - } else if (Format.Builtin.BINARY.equals(format)) { - ByteBuffer byteBufferCarrier = (ByteBuffer)carrier; - extract(fetchContextData(byteBufferCarrier)); - return new ByteBufferContext((ByteBuffer)carrier); - } else { - throw new IllegalArgumentException("Unsupported format: " + format); - } + return new TextMapContext(); } @Override @@ -78,34 +40,4 @@ public class SkywalkingTracer implements Tracer { throw new IllegalArgumentException("span must be a type of SkywalkingSpan"); } } - - private String fetchContextData(TextMap textMap) { - Iterator> iterator = textMap.iterator(); - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - if (TRACE_HEAD_NAME.equals(entry.getKey())) { - return entry.getValue(); - } - } - - return null; - } - - private String fetchContextData(ByteBuffer byteBuffer) { - String contextDataStr = new String(byteBuffer.array(), Charset.forName("UTF-8")); - int index = contextDataStr.indexOf(TRACE_HEAD_NAME); - if (index == -1) { - return null; - } - - try { - byteBuffer.position(index + TRACE_HEAD_NAME.getBytes().length); - byte[] contextDataBytes = new byte[byteBuffer.getInt()]; - byteBuffer.get(contextDataBytes); - return new String(contextDataBytes, Charset.forName("UTF-8")); - } catch (Exception e) { - return null; - } - } - } diff --git a/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/TextMapContext.java b/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/TextMapContext.java index 90152ce22..1afef3a08 100644 --- a/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/TextMapContext.java +++ b/apm-application-toolkit/apm-toolkit-opentracing/src/main/java/org/skywalking/apm/toolkit/opentracing/TextMapContext.java @@ -1,8 +1,6 @@ package org.skywalking.apm.toolkit.opentracing; import io.opentracing.SpanContext; -import io.opentracing.propagation.TextMap; - import java.util.HashMap; import java.util.Map; @@ -10,14 +8,11 @@ import java.util.Map; * Created by wusheng on 2016/12/21. */ public class TextMapContext implements SpanContext { - private final TextMap textMap; - - TextMapContext(TextMap textMap) { - this.textMap = textMap; + public TextMapContext() { } @Override public Iterable> baggageItems() { - return new HashMap().entrySet(); + return new HashMap(0).entrySet(); } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItemHead.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItemHead.java new file mode 100644 index 000000000..baf482782 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/CarrierItemHead.java @@ -0,0 +1,10 @@ +package org.skywalking.apm.agent.core.context; + +/** + * @author wusheng + */ +public class CarrierItemHead extends CarrierItem { + public CarrierItemHead(CarrierItem next) { + super("", "", next); + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java index 8ff02ad05..4cd4897ff 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java @@ -61,7 +61,8 @@ public class ContextCarrier implements Serializable { public CarrierItem items() { SW3CarrierItem carrierItem = new SW3CarrierItem(this, null); - return carrierItem; + CarrierItemHead head = new CarrierItemHead(carrierItem); + return head; } /** @@ -119,6 +120,7 @@ public class ContextCarrier implements Serializable { */ public boolean isValid() { return traceSegmentId != null + && traceSegmentId.isValid() && getSpanId() > -1 && parentApplicationInstanceId != DictionaryUtil.nullValue() && entryApplicationInstanceId != DictionaryUtil.nullValue() diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java index 4a5369451..5f31ac9bc 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ids/ID.java @@ -10,24 +10,31 @@ public class ID { private long part2; private long part3; private String encoding; + private boolean isValid; public ID(long part1, long part2, long part3) { this.part1 = part1; this.part2 = part2; this.part3 = part3; this.encoding = null; + this.isValid = true; } public ID(String encodingString) { - String[] idParts = encodingString.split(".", 3); - int index = 0; + String[] idParts = encodingString.split("\\.", 3); + this.isValid = true; for (int part = 0; part < 3; part++) { - if (part == 0) { - part1 = Long.parseLong(idParts[part]); - } else if (part == 1) { - part2 = Long.parseLong(idParts[part]); - } else { - part3 = Long.parseLong(idParts[part]); + try { + if (part == 0) { + part1 = Long.parseLong(idParts[part]); + } else if (part == 1) { + part2 = Long.parseLong(idParts[part]); + } else { + part3 = Long.parseLong(idParts[part]); + } + } catch (NumberFormatException e) { + this.isValid = false; + break; } } @@ -66,6 +73,10 @@ public class ID { return result; } + public boolean isValid() { + return isValid; + } + public UniqueId transform() { return UniqueId.newBuilder().addIdParts(part1).addIdParts(part2).addIdParts(part3).build(); } diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTest.java index d8f8cb4cb..175348928 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTest.java @@ -79,7 +79,7 @@ public class ContextManagerTest { @Test public void createMultipleEntrySpan() { - ContextCarrier contextCarrier = new ContextCarrier().deserialize("#AQA*#AQA*4WcWe0tQNQA*|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + ContextCarrier contextCarrier = new ContextCarrier().deserialize("1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); assertTrue(contextCarrier.isValid()); AbstractSpan firstEntrySpan = ContextManager.createEntrySpan("/testFirstEntry", contextCarrier); @@ -202,7 +202,7 @@ public class ContextManagerTest { @Test public void testTransform() throws InvalidProtocolBufferException { - ContextCarrier contextCarrier = new ContextCarrier().deserialize("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + ContextCarrier contextCarrier = new ContextCarrier().deserialize("1.234.1983829|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); assertTrue(contextCarrier.isValid()); AbstractSpan firstEntrySpan = ContextManager.createEntrySpan("/testFirstEntry", contextCarrier); diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java index 4a0a05d62..5cfa983ed 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java @@ -50,16 +50,16 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor { span = ContextManager.createExitSpan(generateOperationName(requestURL, invocation), contextCarrier, host + ":" + port); //invocation.getAttachments().put("contextData", contextDataStr); //@see https://github.com/alibaba/dubbo/blob/dubbo-2.5.3/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/RpcInvocation.java#L154-L161 - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); rpcContext.getAttachments().put(next.getHeadKey(), next.getHeadValue()); } } else { ContextCarrier contextCarrier = new ContextCarrier(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); next.setHeadValue(rpcContext.getAttachment(next.getHeadKey())); } diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java index 16b61619b..bcdc3b765 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java @@ -13,11 +13,9 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; import org.skywalking.apm.agent.core.conf.Config; -import org.skywalking.apm.agent.core.context.ContextCarrier; 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; @@ -26,7 +24,6 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.context.util.KeyValuePair; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.test.helper.FieldSetter; import org.skywalking.apm.agent.test.helper.SegmentHelper; import org.skywalking.apm.agent.test.helper.SegmentRefHelper; import org.skywalking.apm.agent.test.helper.SpanHelper; @@ -34,7 +31,6 @@ 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 org.skywalking.apm.plugin.dubbox.BugFixActive; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertNull; @@ -44,7 +40,6 @@ import static org.powermock.api.mockito.PowerMockito.when; @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(TracingSegmentRunner.class) -@PrepareForTest({RpcContext.class, BugFixActive.class}) public class DubboInterceptorTest { @SegmentStoragePoint @@ -58,7 +53,6 @@ public class DubboInterceptorTest { private DubboInterceptor dubboInterceptor; - private RequestParamForTestBelow283 testParam; @Mock private RpcContext rpcContext; @Mock @@ -76,39 +70,20 @@ public class DubboInterceptorTest { @Before public void setUp() throws Exception { dubboInterceptor = new DubboInterceptor(); - testParam = new RequestParamForTestBelow283(); PowerMockito.mockStatic(RpcContext.class); when(invoker.getUrl()).thenReturn(URL.valueOf("dubbo://127.0.0.1:20880/org.skywalking.apm.test.TestDubboService")); when(invocation.getMethodName()).thenReturn("test"); when(invocation.getParameterTypes()).thenReturn(new Class[] {String.class}); - when(invocation.getArguments()).thenReturn(new Object[] {testParam}); + when(invocation.getArguments()).thenReturn(new Object[] {"abc"}); PowerMockito.when(RpcContext.getContext()).thenReturn(rpcContext); when(rpcContext.isConsumerSide()).thenReturn(true); allArguments = new Object[] {invoker, invocation}; argumentTypes = new Class[] {invoker.getClass(), invocation.getClass()}; Config.Agent.APPLICATION_CODE = "DubboTestCases-APP"; - FieldSetter.setStaticValue(BugFixActive.class, "ACTIVE", false); } - @Test - public void testConsumerBelow283() throws Throwable { - BugFixActive.active(); - - dubboInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); - dubboInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, result); - - assertThat(segmentStorage.getTraceSegments().size(), is(1)); - TraceSegment traceSegment = segmentStorage.getTraceSegments().get(0); - - assertThat(SegmentHelper.getSpans(traceSegment).size(), is(1)); - assertConsumerSpan(SegmentHelper.getSpans(traceSegment).get(0)); - - ContextCarrier contextCarrier = new ContextCarrier(); - contextCarrier.deserialize(testParam.getTraceContext()); - assertTrue(contextCarrier.isValid()); - } @Test public void testConsumerWithAttachment() throws Throwable { @@ -147,25 +122,13 @@ public class DubboInterceptorTest { @Test public void testProviderWithAttachment() throws Throwable { when(rpcContext.isConsumerSide()).thenReturn(false); - when(rpcContext.getAttachment(Config.Plugin.Propagation.HEADER_NAME)).thenReturn("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(rpcContext.getAttachment("sw3")).thenReturn("1.323.4433|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); dubboInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); dubboInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, result); assertProvider(); } - @Test - public void testProviderBelow283() throws Throwable { - when(rpcContext.isConsumerSide()).thenReturn(false); - FieldSetter.setStaticValue(BugFixActive.class, "ACTIVE", true); - - testParam.setTraceContext("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); - - dubboInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); - dubboInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, result); - - assertProvider(); - } private void assertConsumerTraceSegmentInErrorCase( TraceSegment traceSegment) { diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/RequestParamForTestBelow283.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/RequestParamForTestBelow283.java deleted file mode 100644 index 93b8f27f6..000000000 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/RequestParamForTestBelow283.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.skywalking.apm.plugin.dubbo; - -import org.skywalking.apm.plugin.dubbox.SWBaseBean; - -/** - * {@link RequestParamForTestBelow283} store context data for test. - */ -public class RequestParamForTestBelow283 extends SWBaseBean { - -} diff --git a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java index bdd4e0f76..57feb80f8 100644 --- a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java @@ -61,9 +61,9 @@ public class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc headersField.setAccessible(true); Map> headers = new LinkedHashMap>(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); List contextCollection = new LinkedList(); contextCollection.add(next.getHeadValue()); headers.put(next.getHeadKey(), contextCollection); diff --git a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java index 601b083cc..76da7413e 100644 --- a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java @@ -42,9 +42,9 @@ public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc Tags.HTTP.METHOD.set(span, httpRequest.getRequestLine().getMethod()); SpanLayer.asHttp(span); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); httpRequest.setHeader(next.getHeadKey(), next.getHeadValue()); } } diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java index bb7c2cf4c..ed94fe1d7 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java @@ -42,9 +42,9 @@ public class MotanConsumerInterceptor implements InstanceConstructorInterceptor, span.setComponent(ComponentsDefine.MOTAN); Tags.URL.set(span, url.getIdentity()); SpanLayer.asRPCFramework(span); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); request.setAttachment(next.getHeadKey(), next.getHeadValue()); } } diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java index c216cdbef..c647c254f 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java @@ -28,9 +28,9 @@ public class MotanProviderInterceptor implements InstanceMethodsAroundIntercepto Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { Request request = (Request)allArguments[0]; ContextCarrier contextCarrier = new ContextCarrier(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); next.setHeadValue(request.getAttachments().get(next.getHeadKey())); } diff --git a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java index 69bda7d75..1ed78316a 100644 --- a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java @@ -67,9 +67,9 @@ public class RealCallInterceptor implements InstanceMethodsAroundInterceptor, In headersField.setAccessible(true); Headers.Builder headerBuilder = request.headers().newBuilder(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); headerBuilder.add(next.getHeadKey(), next.getHeadValue()); } headersField.set(request, headerBuilder.build()); diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java index 6c457267c..10809442f 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java @@ -26,9 +26,9 @@ public class ResinV3Interceptor implements InstanceMethodsAroundInterceptor { Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { CauchoRequest request = (CauchoRequest)allArguments[0]; ContextCarrier contextCarrier = new ContextCarrier(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); next.setHeadValue(request.getHeader(next.getHeadKey())); } diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java index 68a462db0..92787c441 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java @@ -23,9 +23,9 @@ public class ResinV4Interceptor implements InstanceMethodsAroundInterceptor { Class[] argumentsTypes, MethodInterceptResult result) throws Throwable { CauchoRequest request = (CauchoRequest)allArguments[0]; ContextCarrier contextCarrier = new ContextCarrier(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); next.setHeadValue(request.getHeader(next.getHeadKey())); } AbstractSpan span = ContextManager.createEntrySpan(request.getPageURI(), contextCarrier); 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 4a5ba2571..939715069 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 @@ -3,7 +3,7 @@ package org.skywalking.apm.plugin.spring.mvc; import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; @@ -19,8 +19,6 @@ import org.springframework.web.context.request.ServletRequestAttributes; /** * The ControllerServiceMethodInterceptor only use the first mapping value. - * - * @See {@link ControllerConstructorInterceptor} to explain why we are doing this. */ public class ControllerServiceMethodInterceptor implements InstanceMethodsAroundInterceptor { @Override @@ -40,8 +38,14 @@ public class ControllerServiceMethodInterceptor implements InstanceMethodsAround } HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); - String tracingHeaderValue = request.getHeader(Config.Plugin.Propagation.HEADER_NAME); - ContextCarrier contextCarrier = new ContextCarrier().deserialize(tracingHeaderValue); + + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + next.setHeadValue(request.getHeader(next.getHeadKey())); + } + AbstractSpan span = ContextManager.createEntrySpan(requestURL, contextCarrier); Tags.URL.set(span, request.getRequestURL().toString()); Tags.HTTP.METHOD.set(span, request.getMethod()); diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/async/RestExecuteInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/async/RestExecuteInterceptor.java index 4ee3e2581..34827ab81 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/async/RestExecuteInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/async/RestExecuteInterceptor.java @@ -30,7 +30,7 @@ public class RestExecuteInterceptor implements InstanceMethodsAroundInterceptor SpanLayer.asHttp(span); Object[] cacheValues = new Object[3]; cacheValues[0] = requestURL; - cacheValues[1] = contextCarrier.serialize(); + cacheValues[1] = contextCarrier; objInst.setSkyWalkingDynamicField(cacheValues); } diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestExecuteInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestExecuteInterceptor.java index a0764191b..dab1248e1 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestExecuteInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestExecuteInterceptor.java @@ -29,7 +29,7 @@ public class RestExecuteInterceptor implements InstanceMethodsAroundInterceptor Tags.HTTP.METHOD.set(span, httpMethod.toString()); SpanLayer.asHttp(span); - objInst.setSkyWalkingDynamicField(contextCarrier.serialize()); + objInst.setSkyWalkingDynamicField(contextCarrier); } @Override diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestRequestInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestRequestInterceptor.java index 23e062c5b..59bc39694 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestRequestInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/skywalking/apm/plugin/spring/resttemplate/sync/RestRequestInterceptor.java @@ -1,7 +1,8 @@ package org.skywalking.apm.plugin.spring.resttemplate.sync; import java.lang.reflect.Method; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; +import org.skywalking.apm.agent.core.context.ContextCarrier; 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; @@ -22,7 +23,12 @@ public class RestRequestInterceptor implements InstanceMethodsAroundInterceptor ClientHttpRequest clientHttpRequest = (ClientHttpRequest)ret; if (clientHttpRequest instanceof AbstractClientHttpRequest) { AbstractClientHttpRequest httpRequest = (AbstractClientHttpRequest)clientHttpRequest; - httpRequest.getHeaders().set(Config.Plugin.Propagation.HEADER_NAME, String.valueOf(objInst.getSkyWalkingDynamicField())); + ContextCarrier contextCarrier = (ContextCarrier)objInst.getSkyWalkingDynamicField(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + httpRequest.getHeaders().set(next.getHeadKey(), next.getHeadValue()); + } } return ret; } diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/springframework/http/client/RestRequestInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/springframework/http/client/RestRequestInterceptor.java index f8bde0b91..4072cc39a 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/springframework/http/client/RestRequestInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/resttemplate-4.x-plugin/src/main/java/org/springframework/http/client/RestRequestInterceptor.java @@ -1,7 +1,8 @@ package org.springframework.http.client; import java.lang.reflect.Method; -import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.CarrierItem; +import org.skywalking.apm.agent.core.context.ContextCarrier; 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; @@ -19,7 +20,13 @@ public class RestRequestInterceptor implements InstanceMethodsAroundInterceptor Object ret) throws Throwable { AbstractAsyncClientHttpRequest clientHttpRequest = (AbstractAsyncClientHttpRequest)ret; if (ret != null) { - clientHttpRequest.getHeaders().set(Config.Plugin.Propagation.HEADER_NAME, String.valueOf(((Object[])objInst.getSkyWalkingDynamicField())[1])); + Object[] cacheValues = (Object[])objInst.getSkyWalkingDynamicField(); + ContextCarrier contextCarrier = (ContextCarrier)cacheValues[1]; + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + clientHttpRequest.getHeaders().set(next.getHeadKey(), next.getHeadValue()); + } } return ret; } diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java index 8aafaee96..dd5b679d0 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptor.java @@ -38,9 +38,9 @@ public class TomcatInvokeInterceptor implements InstanceMethodsAroundInterceptor HttpServletRequest request = (HttpServletRequest)allArguments[0]; ContextCarrier contextCarrier = new ContextCarrier(); - CarrierItem items = contextCarrier.items(); - while (items.hasNext()) { - CarrierItem next = items.next(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); next.setHeadValue(request.getHeader(next.getHeadKey())); } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java index d91d29144..65df8591d 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java @@ -1,11 +1,16 @@ package org.skywalking.apm.toolkit.activation.opentracing.tracer; +import io.opentracing.propagation.Format; +import io.opentracing.propagation.TextMap; import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.Map; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; -import org.skywalking.apm.agent.core.context.ContextManager; 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.toolkit.opentracing.TextMapContext; public class SkywalkingTracerExtractInterceptor implements InstanceMethodsAroundInterceptor { @Override @@ -17,10 +22,26 @@ public class SkywalkingTracerExtractInterceptor implements InstanceMethodsAround @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { - String carrier = (String)allArguments[0]; - ContextCarrier contextCarrier = new ContextCarrier().deserialize(carrier); - ContextManager.extract(contextCarrier); - return ret; + Format format = (Format)allArguments[0]; + if (Format.Builtin.TEXT_MAP.equals(format) || Format.Builtin.HTTP_HEADERS.equals(format)) { + TextMap textMapCarrier = (TextMap)allArguments[1]; + + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + Iterator> iterator = textMapCarrier.iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + if (next.getHeadKey().equals(entry.getKey())) { + next.setHeadValue(entry.getValue()); + break; + } + } + + } + } + return new TextMapContext(); } @Override diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerInjectInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerInjectInterceptor.java index 34a44c21e..4c899ab6a 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerInjectInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerInjectInterceptor.java @@ -1,6 +1,9 @@ package org.skywalking.apm.toolkit.activation.opentracing.tracer; +import io.opentracing.propagation.Format; +import io.opentracing.propagation.TextMap; import java.lang.reflect.Method; +import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; @@ -17,9 +20,21 @@ public class SkywalkingTracerInjectInterceptor implements InstanceMethodsAroundI @Override public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, Object ret) throws Throwable { - ContextCarrier contextCarrier = new ContextCarrier(); - ContextManager.inject(contextCarrier); - return contextCarrier.serialize(); + Format format = (Format)allArguments[1]; + if (Format.Builtin.TEXT_MAP.equals(format) || Format.Builtin.HTTP_HEADERS.equals(format)) { + TextMap carrier = (TextMap)allArguments[2]; + ContextCarrier contextCarrier = new ContextCarrier(); + ContextManager.inject(contextCarrier); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + carrier.put(next.getHeadKey(), next.getHeadValue()); + } + } else { + //Don't support other format yet. + } + + return null; } @Override From be992f41067bba0d669993d4b15e89ebe3b17c50 Mon Sep 17 00:00:00 2001 From: wusheng Date: Tue, 19 Sep 2017 23:45:12 +0800 Subject: [PATCH 09/12] Fix test case issues --- .../skywalking/apm/agent/core/context/SW3CarrierItem.java | 4 ++-- .../skywalking/apm/plugin/dubbo/DubboInterceptorTest.java | 7 +++++-- .../apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java | 6 +++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java index 57cea7d9a..9ec00f255 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/SW3CarrierItem.java @@ -4,11 +4,11 @@ package org.skywalking.apm.agent.core.context; * @author wusheng */ public class SW3CarrierItem extends CarrierItem { - private static final String HEAD_NAME = "sw3"; + public static final String HEADER_NAME = "sw3"; private ContextCarrier carrier; public SW3CarrierItem(ContextCarrier carrier, CarrierItem next) { - super(HEAD_NAME, carrier.serialize(), next); + super(HEADER_NAME, carrier.serialize(), next); this.carrier = carrier; } diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java index bcdc3b765..a74fbdf8f 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java @@ -13,9 +13,11 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; 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; @@ -40,6 +42,7 @@ import static org.powermock.api.mockito.PowerMockito.when; @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(TracingSegmentRunner.class) +@PrepareForTest({RpcContext.class}) public class DubboInterceptorTest { @SegmentStoragePoint @@ -122,7 +125,7 @@ public class DubboInterceptorTest { @Test public void testProviderWithAttachment() throws Throwable { when(rpcContext.isConsumerSide()).thenReturn(false); - when(rpcContext.getAttachment("sw3")).thenReturn("1.323.4433|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(rpcContext.getAttachment(SW3CarrierItem.HEADER_NAME)).thenReturn("1.323.4433|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); dubboInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); dubboInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, result); @@ -157,7 +160,7 @@ public class DubboInterceptorTest { private void assertTraceSegmentRef(TraceSegmentRef actual) { assertThat(SegmentRefHelper.getSpanId(actual), is(3)); assertThat(SegmentRefHelper.getEntryApplicationInstanceId(actual), is(1)); - assertThat(SegmentRefHelper.getTraceSegmentId(actual).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(actual).toString(), is("1.323.4433")); } private void assertProviderSpan(AbstractTracingSpan span) { diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java index 8a995d6e5..f6cb22515 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java @@ -10,7 +10,7 @@ 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.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; 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; @@ -90,7 +90,7 @@ public class TomcatInvokeInterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(Config.Plugin.Propagation.HEADER_NAME)).thenReturn("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); tomcatInvokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); tomcatInvokeInterceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); @@ -138,7 +138,7 @@ public class TomcatInvokeInterceptorTest { private void assertTraceSegmentRef(TraceSegmentRef ref) { assertThat(SegmentRefHelper.getEntryApplicationInstanceId(ref), is(1)); assertThat(SegmentRefHelper.getSpanId(ref), is(3)); - assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.234.111")); } private void assertHttpSpan(AbstractTracingSpan span) { From 1a76da6cddb3de83394ad65de1d992d7d17ea81a Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 20 Sep 2017 10:18:22 +0800 Subject: [PATCH 10/12] Finish codes about new ContextCarrier coding style. --- .../motan/MotanProviderInterceptorTest.java | 6 +- .../resin/v3/ResinV3InterceptorTest.java | 6 +- .../resin/v4/ResinV4InterceptorTest.java | 6 +- .../SkywalkingTracerExtractInterceptor.java | 3 +- .../SkywalkingSpanActivationTest.java | 71 +++++++++++++++---- 5 files changed, 70 insertions(+), 22 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java index f04984fbb..076b6d46e 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java @@ -13,7 +13,7 @@ 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.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; 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; @@ -91,7 +91,7 @@ public class MotanProviderInterceptorTest { @Test public void testInvokerWithRefSegment() throws Throwable { HashMap attachments = new HashMap(); - attachments.put(Config.Plugin.Propagation.HEADER_NAME, "#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + attachments.put(SW3CarrierItem.HEADER_NAME, "1.123.456|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); when(request.getAttachments()).thenReturn(attachments); invokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, null); @@ -135,7 +135,7 @@ public class MotanProviderInterceptorTest { } private void assertRefSegment(TraceSegmentRef primaryRef) { - assertThat(SegmentRefHelper.getTraceSegmentId(primaryRef).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(primaryRef).toString(), is("1.123.456")); assertThat(SegmentRefHelper.getSpanId(primaryRef), is(3)); assertThat(SegmentRefHelper.getEntryApplicationInstanceId(primaryRef), is(1)); assertThat(SegmentRefHelper.getPeerHost(primaryRef), is("192.168.1.8:18002")); diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java index f52879d6a..b26a0fc48 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java @@ -10,7 +10,7 @@ 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.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; 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; @@ -90,7 +90,7 @@ public class ResinV3InterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(Config.Plugin.Propagation.HEADER_NAME)).thenReturn("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.333.2345|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); interceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); @@ -122,7 +122,7 @@ public class ResinV3InterceptorTest { private void assertTraceSegmentRef(TraceSegmentRef ref) { assertThat(SegmentRefHelper.getSpanId(ref), is(3)); assertThat(SegmentRefHelper.getEntryApplicationInstanceId(ref), is(1)); - assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.333.2345")); } private void assertHttpSpan(AbstractTracingSpan span) { diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java index e46e4365d..233b69e84 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java @@ -10,7 +10,7 @@ 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.conf.Config; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; 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; @@ -92,7 +92,7 @@ public class ResinV4InterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(Config.Plugin.Propagation.HEADER_NAME)).thenReturn("#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.444.555|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); interceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); @@ -124,7 +124,7 @@ public class ResinV4InterceptorTest { private void assertTraceSegmentRef(TraceSegmentRef ref) { assertThat(SegmentRefHelper.getEntryApplicationInstanceId(ref), is(1)); assertThat(SegmentRefHelper.getSpanId(ref), is(3)); - assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.1.15006458883500001")); + assertThat(SegmentRefHelper.getTraceSegmentId(ref).toString(), is("1.444.555")); } private void assertHttpSpan(AbstractTracingSpan span) { diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java index 65df8591d..d2a52d1cd 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkywalkingTracerExtractInterceptor.java @@ -7,6 +7,7 @@ import java.util.Iterator; import java.util.Map; import org.skywalking.apm.agent.core.context.CarrierItem; import org.skywalking.apm.agent.core.context.ContextCarrier; +import org.skywalking.apm.agent.core.context.ContextManager; 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; @@ -38,8 +39,8 @@ public class SkywalkingTracerExtractInterceptor implements InstanceMethodsAround break; } } - } + ContextManager.extract(contextCarrier); } return new TextMapContext(); } diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java index 27df5bc10..475674603 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java @@ -1,17 +1,23 @@ package org.skywalking.apm.toolkit.activation.opentracing; import io.opentracing.Tracer; +import io.opentracing.propagation.Format; +import io.opentracing.propagation.TextMap; import io.opentracing.tag.Tags; import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextSnapshot; +import org.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.skywalking.apm.agent.core.context.ids.ID; import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; @@ -32,14 +38,15 @@ import org.skywalking.apm.toolkit.activation.opentracing.tracer.SkywalkingTracer import org.skywalking.apm.toolkit.opentracing.SkywalkingContinuation; import org.skywalking.apm.toolkit.opentracing.SkywalkingSpan; import org.skywalking.apm.toolkit.opentracing.SkywalkingSpanBuilder; +import org.skywalking.apm.toolkit.opentracing.TextMapContext; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertEntryApplicationInstanceId; import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertPeerHost; import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertSegmentId; -import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertEntryApplicationInstanceId; import static org.skywalking.apm.agent.test.tools.SegmentRefAssert.assertSpanId; import static org.skywalking.apm.agent.test.tools.SpanAssert.assertComponent; import static org.skywalking.apm.agent.test.tools.SpanAssert.assertLogSize; @@ -167,14 +174,25 @@ public class SkywalkingSpanActivationTest { .withTag(Tags.PEER_HOST_IPV4.getKey(), "127.0.0.1").withTag(Tags.PEER_PORT.getKey(), 8080); startSpan(); - String extractValue = (String)injectInterceptor.afterMethod(enhancedInstance, null, - null, null, null); + final Map values = new HashMap(); + TextMap carrier = new TextMap() { + @Override public Iterator> iterator() { + return null; + } - ContextCarrier contextCarrier = new ContextCarrier().deserialize(extractValue); - assertTrue(contextCarrier.isValid()); - assertThat(contextCarrier.getPeerHost(), is("#127.0.0.1:8080")); - assertThat(contextCarrier.getSpanId(), is(0)); - assertThat(contextCarrier.getEntryOperationName(), is("#testOperationName")); + @Override public void put(String key, String value) { + values.put(key, value); + } + + }; + + injectInterceptor.afterMethod(enhancedInstance, null, + new Object[] {new TextMapContext(), Format.Builtin.TEXT_MAP, carrier}, null, null); + + String[] parts = values.get(SW3CarrierItem.HEADER_NAME).split("\\|", 8); + Assert.assertEquals("0", parts[1]); + Assert.assertEquals("#127.0.0.1:8080", parts[4]); + Assert.assertTrue(new ID(parts[7]).isValid()); stopSpan(); } @@ -183,15 +201,29 @@ public class SkywalkingSpanActivationTest { spanBuilder.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT) .withTag(Tags.PEER_HOST_IPV4.getKey(), "127.0.0.1").withTag(Tags.PEER_PORT.getKey(), 8080); startSpan(); + final Map values = new HashMap(); + TextMap carrier = new TextMap() { + @Override public Iterator> iterator() { + return values.entrySet().iterator(); + } + + @Override public void put(String key, String value) { + values.put(key, value); + } + + }; + + values.put(SW3CarrierItem.HEADER_NAME, "1.343.222|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|434.12.12123"); + extractInterceptor.afterMethod(enhancedInstance, null, - new Object[] {"#AQA*#AQA*4WcWe0tQNQA*|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"}, new Class[] {String.class}, null); + new Object[] {Format.Builtin.TEXT_MAP, carrier}, new Class[] {}, null); stopSpan(); TraceSegment tracingSegment = assertTraceSemgnets(); List spans = SegmentHelper.getSpans(tracingSegment); assertThat(tracingSegment.getRefs().size(), is(1)); TraceSegmentRef ref = tracingSegment.getRefs().get(0); - assertSegmentId(ref, "1.1.15006458883500001"); + assertSegmentId(ref, "1.343.222"); assertSpanId(ref, 3); assertEntryApplicationInstanceId(ref, 1); assertPeerHost(ref, "127.0.0.1:8080"); @@ -204,8 +236,23 @@ public class SkywalkingSpanActivationTest { spanBuilder.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT) .withTag(Tags.PEER_HOST_IPV4.getKey(), "127.0.0.1").withTag(Tags.PEER_PORT.getKey(), 8080); startSpan(); + + final Map values = new HashMap(); + TextMap carrier = new TextMap() { + @Override public Iterator> iterator() { + return values.entrySet().iterator(); + } + + @Override public void put(String key, String value) { + values.put(key, value); + } + + }; + + values.put(SW3CarrierItem.HEADER_NAME, "aaaaaaaa|3|#192.168.1.8:18002|#/portal/|#/testEntrySpan|1.234.444"); + extractInterceptor.afterMethod(enhancedInstance, null, - new Object[] {"#AQA*#AQA*4WcWe0tQNQA*|3|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"}, new Class[] {String.class}, null); + new Object[] {Format.Builtin.TEXT_MAP, carrier}, new Class[] {}, null); stopSpan(); TraceSegment tracingSegment = assertTraceSemgnets(); From edd2b742d1f13c487ca15f7853ae15263b5e45fc Mon Sep 17 00:00:00 2001 From: clevertension Date: Wed, 20 Sep 2017 14:04:45 +0800 Subject: [PATCH 11/12] add auto local jar file installation before compile --- pom.xml | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/pom.xml b/pom.xml index 26b309587..1f358e530 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,113 @@ + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + install-jmxtools + false + process-resources + + exec + + + mvn + + install:install-file + -Dfile=jmxtools-1.2.1.jar + -DgroupId=com.sun.jdmk + -DartifactId=jmxtools + -Dversion=1.2.1 + -Dpackaging=jar + + ${project.basedir}/ci-dependencies + + + + 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 + + + + install-resin + 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 + + + + install-jmxri + false + process-resources + + exec + + + mvn + + install:install-file + -Dfile=jmxri-1.2.1.jar + -DgroupId=com.sun.jmx + -DartifactId=jmxri + -Dversion=1.2.1 + -Dpackaging=jar + + ${project.basedir}/ci-dependencies + + + + install-dubbox + false + process-resources + + exec + + + mvn + + install:install-file + -Dfile=dubbox-2.8.4.jar + -DgroupId=com.alibaba + -DartifactId=dubbox + -Dversion=2.8.4 + -Dpackaging=jar + + ${project.basedir}/ci-dependencies + + + + org.apache.maven.plugins maven-compiler-plugin From cfe722c7054d712da789932298f8956d6bd8ba32 Mon Sep 17 00:00:00 2001 From: clevertension Date: Wed, 20 Sep 2017 14:55:53 +0800 Subject: [PATCH 12/12] remove prepare stage --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd5b45c10..a2ec51cf3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,14 +4,6 @@ services: - docker language: java -install: - - cd ci-dependencies - - mvn install:install-file -Dfile=jmxtools-1.2.1.jar -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar - - mvn install:install-file -Dfile=jmxri-1.2.1.jar -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar - - mvn install:install-file -Dfile=dubbox-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbox -Dversion=2.8.4 -Dpackaging=jar - - 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 - - mvn install:install-file -Dfile=resin-4.0.41.jar -DgroupId=com.caucho -DartifactId=resin -Dversion=4.0.41 -Dpackaging=jar - - cd .. script: - jdk_switcher use oraclejdk8