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
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?]()
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-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-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/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 &"
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-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/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 82dd3c5c3..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
@@ -59,23 +59,29 @@ public class ContextCarrier implements Serializable {
*/
private DistributedTraceId primaryDistributedTraceId;
+ public CarrierItem items() {
+ SW3CarrierItem carrierItem = new SW3CarrierItem(this, null);
+ CarrierItemHead head = new CarrierItemHead(carrierItem);
+ return head;
+ }
+
/**
* 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().toBase64(),
+ this.getTraceSegmentId().encode(),
this.getSpanId() + "",
this.getParentApplicationInstanceId() + "",
this.getEntryApplicationInstanceId() + "",
this.getPeerHost(),
this.getEntryOperationName(),
this.getParentOperationName(),
- this.getPrimaryDistributedTraceId().toBase64());
+ this.getPrimaryDistributedTraceId().encode());
} else {
return "";
}
@@ -86,7 +92,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) {
@@ -114,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/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..9ec00f255
--- /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 {
+ public static final String HEADER_NAME = "sw3";
+ private ContextCarrier carrier;
+
+ public SW3CarrierItem(ContextCarrier carrier, CarrierItem next) {
+ super(HEADER_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 f6e5623ef..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,8 +26,8 @@ public abstract class DistributedTraceId {
this.id = new ID(id);
}
- public String toBase64() {
- return id.toBase64();
+ public String encode() {
+ 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..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
@@ -1,85 +1,50 @@
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;
+ 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 base64String) {
- int index = 0;
+ public ID(String encodingString) {
+ String[] idParts = encodingString.split("\\.", 3);
+ this.isValid = true;
for (int part = 0; part < 3; part++) {
- String encodedString;
- char potentialTypeChar = base64String.charAt(index);
- long value;
- if (potentialTypeChar == '#') {
- encodedString = base64String.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);
- index += 9;
- value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().get(0);
- } else {
- encodedString = base64String.substring(index, index + 12);
- index += 12;
- value = ByteBuffer.wrap(DECODER.decode(encodedString)).order(ByteOrder.LITTLE_ENDIAN).asLongBuffer().get(0);
- }
-
- if (part == 0) {
- part1 = value;
- } else if (part == 1) {
- part2 = value;
- } else {
- part3 = value;
+ 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;
}
}
}
- public String toBase64() {
- return long2Base64(part1) + long2Base64(part2) + long2Base64(part3);
- }
-
- 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);
+ public String encode() {
+ if (encoding == null) {
+ encoding = toString();
}
+ return encoding;
}
@Override public String toString() {
@@ -108,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-agent/pom.xml b/apm-sniffer/apm-agent/pom.xml
index 33ef29c4c..9d33ce7ec 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/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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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..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
@@ -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;
@@ -18,7 +17,7 @@ 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.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;
@@ -27,7 +26,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;
@@ -35,7 +33,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;
@@ -45,7 +42,7 @@ import static org.powermock.api.mockito.PowerMockito.when;
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(TracingSegmentRunner.class)
-@PrepareForTest({RpcContext.class, BugFixActive.class})
+@PrepareForTest({RpcContext.class})
public class DubboInterceptorTest {
@SegmentStoragePoint
@@ -59,7 +56,6 @@ public class DubboInterceptorTest {
private DubboInterceptor dubboInterceptor;
- private RequestParamForTestBelow283 testParam;
@Mock
private RpcContext rpcContext;
@Mock
@@ -77,39 +73,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 {
@@ -148,25 +125,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(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);
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) {
@@ -195,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/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/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/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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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/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/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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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/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/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..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
@@ -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 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 b77377cf6..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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/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/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/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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml
index b3e6782e9..5f426d7e6 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-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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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-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/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/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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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/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-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/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/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/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/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-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..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
@@ -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 next = contextCarrier.items();
+ while (next.hasNext()) {
+ next = next.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-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) {
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-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..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
@@ -1,11 +1,17 @@
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 +23,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;
+ }
+ }
+ }
+ ContextManager.extract(contextCarrier);
+ }
+ 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
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..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,24 +1,28 @@
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;
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,15 +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.SkywalkingTracer;
+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;
@@ -170,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();
}
@@ -186,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");
@@ -207,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();
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..1f358e530 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.skywalking
apm
- 3.2-2017
+ 3.2.1-2017
@@ -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