From 833e1892ad988d94a6b9b86105fbd04eb75b5c44 Mon Sep 17 00:00:00 2001
From: GuoLei Song <35319286+glmapper@users.noreply.github.com>
Date: Thu, 28 Nov 2019 15:50:51 +0800
Subject: [PATCH] Cheery pick code from 3.x (#306)
---
.../plugins/dubbo/DubboSofaTracerFilter.java | 10 ++++-
.../sofa-tracer-flexible-plugin/pom.xml | 3 +-
.../flexible/FlexibleDigestEncoder.java | 17 +++++---
.../flexible/FlexibleDigestJsonEncoder.java | 2 +-
.../plugin/flexible/FlexibleTracer.java | 9 +----
.../HttpClientStatJsonReporter.java | 3 +-
.../httpclient/HttpClientStatReporter.java | 7 ++--
.../okhttp/OkHttpStatJsonReporter.java | 3 +-
.../plugins/okhttp/OkHttpStatReporter.java | 7 ++--
.../rest/RestTemplateStatJsonReporter.java | 3 +-
.../rest/RestTemplateStatReporter.java | 9 ++---
.../rest/SofaTracerRestTemplateBuilder.java | 1 +
.../core/constants/SofaTracerConstant.java | 4 +-
.../context/span/SofaTracerSpanContext.java | 8 ++--
.../core/registry/AbstractTextFormatter.java | 6 +--
.../AbstractSofaTracerStatisticReporter.java | 7 ++++
.../tracer/core/span/CommonSpanTags.java | 1 +
.../tracer/core/span/SofaTracerSpan.java | 31 ++++++++-------
.../common/tracer/core/tags/SpanTags.java | 39 +++++++++++++++++++
.../core/tracer/AbstractClientTracer.java | 5 +++
.../common/CommonTracerManagerTest.java | 1 -
.../core/tracer/AbstractServerTracerTest.java | 6 ++-
22 files changed, 121 insertions(+), 61 deletions(-)
diff --git a/sofa-tracer-plugins/sofa-tracer-dubbo-2.6.x-plugin/src/main/java/com/alipay/sofa/tracer/plugins/dubbo/DubboSofaTracerFilter.java b/sofa-tracer-plugins/sofa-tracer-dubbo-2.6.x-plugin/src/main/java/com/alipay/sofa/tracer/plugins/dubbo/DubboSofaTracerFilter.java
index 1f7055fd..cbd847c6 100644
--- a/sofa-tracer-plugins/sofa-tracer-dubbo-2.6.x-plugin/src/main/java/com/alipay/sofa/tracer/plugins/dubbo/DubboSofaTracerFilter.java
+++ b/sofa-tracer-plugins/sofa-tracer-dubbo-2.6.x-plugin/src/main/java/com/alipay/sofa/tracer/plugins/dubbo/DubboSofaTracerFilter.java
@@ -238,10 +238,16 @@ private static void handleError(Throwable error, SofaTracerSpan span) {
} else {
errorCode = SofaTracerConstant.RESULT_CODE_ERROR;
}
- span.setTag(Tags.ERROR.getKey(), error.getMessage());
if (span == null) {
- DubboConsumerSofaTracer.getDubboConsumerSofaTracerSingleton().clientReceive(errorCode);
+ SofaTracerSpan currentSpan = SofaTraceContextHolder.getSofaTraceContext()
+ .getCurrentSpan();
+ if (currentSpan != null) {
+ currentSpan.setTag(Tags.ERROR.getKey(), error.getMessage());
+ DubboConsumerSofaTracer.getDubboConsumerSofaTracerSingleton().clientReceive(
+ errorCode);
+ }
} else {
+ span.setTag(Tags.ERROR.getKey(), error.getMessage());
DubboConsumerSofaTracer.getDubboConsumerSofaTracerSingleton().clientReceiveTagFinish(
span, errorCode);
}
diff --git a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/pom.xml b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/pom.xml
index 215f7db4..f860213c 100644
--- a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/pom.xml
+++ b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/pom.xml
@@ -22,7 +22,6 @@
org.slf4j
slf4j-api
-
-
+
\ No newline at end of file
diff --git a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestEncoder.java b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestEncoder.java
index 3275e395..be8bf95d 100644
--- a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestEncoder.java
+++ b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestEncoder.java
@@ -20,7 +20,9 @@
import com.alipay.common.tracer.core.appender.builder.XStringBuilder;
import com.alipay.common.tracer.core.span.CommonSpanTags;
import com.alipay.common.tracer.core.span.SofaTracerSpan;
+import com.alipay.common.tracer.core.utils.StringUtils;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -34,27 +36,32 @@ public class FlexibleDigestEncoder extends FlexibleDigestJsonEncoder {
protected void appendComponentSlot(XStringBuilder xsb, JsonStringBuilder jsb, SofaTracerSpan span) {
Map strTags = span.getTagsWithStr();
Map numTags = span.getTagsWithNumber();
- Map boolTags = span.getTagsWithNumber();
+ Map boolTags = span.getTagsWithBool();
xsb.append(strTags.get(CommonSpanTags.METHOD));
-
Set strKeys = strTags.keySet();
+ Map flexibleTags = new HashMap<>();
strKeys.forEach(key->{
if (!isFlexible(key)){
- xsb.append(strTags.get(key));
+ flexibleTags.put(key,strTags.get(key));
}
});
+
Set numKeys = numTags.keySet();
numKeys.forEach(key->{
if (!isFlexible(key)){
- xsb.append(String.valueOf(numTags.get(key)));
+ flexibleTags.put(key,String.valueOf(numTags.get(key)));
}
});
+
Set boolKeys = boolTags.keySet();
boolKeys.forEach(key->{
if (!isFlexible(key)){
- xsb.append(String.valueOf(boolTags.get(key)));
+ flexibleTags.put(key,String.valueOf(boolTags.get(key)));
}
});
+
+ String flexibleTagsData = StringUtils.mapToString(flexibleTags);
+ xsb.append(flexibleTagsData);
}
}
diff --git a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestJsonEncoder.java b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestJsonEncoder.java
index c8e7ee0f..108c1eb6 100644
--- a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestJsonEncoder.java
+++ b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleDigestJsonEncoder.java
@@ -38,7 +38,7 @@ public class FlexibleDigestJsonEncoder extends AbstractDigestSpanEncoder {
protected void appendComponentSlot(XStringBuilder xsb, JsonStringBuilder jsb, SofaTracerSpan span) {
Map strTags = span.getTagsWithStr();
Map numTags = span.getTagsWithNumber();
- Map boolTags = span.getTagsWithNumber();
+ Map boolTags = span.getTagsWithBool();
//POST/GET
jsb.append(CommonSpanTags.METHOD, strTags.get(CommonSpanTags.METHOD));
diff --git a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleTracer.java b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleTracer.java
index 019053d4..4be0b1f2 100644
--- a/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleTracer.java
+++ b/sofa-tracer-plugins/sofa-tracer-flexible-plugin/src/main/java/com/alipay/sofa/tracer/plugin/flexible/FlexibleTracer.java
@@ -190,17 +190,10 @@ public SofaTracerSpan beforeInvoke(String operationName) {
return methodSpan;
}
- /**
- * normal finish
- */
public void afterInvoke() {
afterInvoke(StringUtils.EMPTY_STRING);
}
- /**
- * error finish
- * @param error
- */
public void afterInvoke(String error) {
SofaTraceContext sofaTraceContext = SofaTraceContextHolder.getSofaTraceContext();
SofaTracerSpan clientSpan = sofaTraceContext.pop();
@@ -233,4 +226,4 @@ private SofaTracerSpan errorSpan(Map bizBaggage, Map 0 && this
- .isHttpOrMvcSuccess(resultCode));
+ boolean success = isWebHttpClientSuccess(resultCode);
statKey.setResult(success ? SofaTracerConstant.STAT_FLAG_SUCCESS
: SofaTracerConstant.STAT_FLAG_FAILS);
//end
diff --git a/sofa-tracer-plugins/sofa-tracer-httpclient-plugin/src/main/java/com/alipay/sofa/tracer/plugins/httpclient/HttpClientStatReporter.java b/sofa-tracer-plugins/sofa-tracer-httpclient-plugin/src/main/java/com/alipay/sofa/tracer/plugins/httpclient/HttpClientStatReporter.java
index bda2b936..50c8518d 100644
--- a/sofa-tracer-plugins/sofa-tracer-httpclient-plugin/src/main/java/com/alipay/sofa/tracer/plugins/httpclient/HttpClientStatReporter.java
+++ b/sofa-tracer-plugins/sofa-tracer-httpclient-plugin/src/main/java/com/alipay/sofa/tracer/plugins/httpclient/HttpClientStatReporter.java
@@ -46,10 +46,11 @@ public void doReportStat(SofaTracerSpan sofaTracerSpan) {
String methodName = tagsWithStr.get(CommonSpanTags.METHOD);
statKey.setKey(buildString(new String[] { localApp, requestUrl, methodName }));
+ //success
String resultCode = tagsWithStr.get(CommonSpanTags.RESULT_CODE);
- statKey
- .setResult(SofaTracerConstant.RESULT_CODE_SUCCESS.equals(resultCode) ? SofaTracerConstant.STAT_FLAG_SUCCESS
- : SofaTracerConstant.STAT_FLAG_FAILS);
+ boolean success = isWebHttpClientSuccess(resultCode);
+ statKey.setResult(success ? SofaTracerConstant.STAT_FLAG_SUCCESS
+ : SofaTracerConstant.STAT_FLAG_FAILS);
statKey.setEnd(buildString(new String[] { TracerUtils.getLoadTestMark(sofaTracerSpan) }));
//pressure mark
diff --git a/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatJsonReporter.java b/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatJsonReporter.java
index cebf1688..cd5f7871 100644
--- a/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatJsonReporter.java
+++ b/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatJsonReporter.java
@@ -47,8 +47,7 @@ public void doReportStat(SofaTracerSpan sofaTracerSpan) {
statKey.setLoadTest(TracerUtils.isLoadTest(sofaTracerSpan));
//success
String resultCode = tagsWithStr.get(CommonSpanTags.RESULT_CODE);
- boolean success = (resultCode != null && resultCode.length() > 0 && this
- .isHttpOrMvcSuccess(resultCode));
+ boolean success = isWebHttpClientSuccess(resultCode);
statKey.setResult(success ? SofaTracerConstant.STAT_FLAG_SUCCESS
: SofaTracerConstant.STAT_FLAG_FAILS);
//end
diff --git a/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatReporter.java b/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatReporter.java
index 068408e5..b8bd1a19 100644
--- a/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatReporter.java
+++ b/sofa-tracer-plugins/sofa-tracer-okhttp-plugin/src/main/java/com/alipay/sofa/tracer/plugins/okhttp/OkHttpStatReporter.java
@@ -45,10 +45,11 @@ public void doReportStat(SofaTracerSpan sofaTracerSpan) {
String methodName = tagsWithStr.get(CommonSpanTags.METHOD);
statKey.setKey(buildString(new String[] { localApp, requestUrl, methodName }));
+ //success
String resultCode = tagsWithStr.get(CommonSpanTags.RESULT_CODE);
- statKey
- .setResult(SofaTracerConstant.RESULT_CODE_SUCCESS.equals(resultCode) ? SofaTracerConstant.STAT_FLAG_SUCCESS
- : SofaTracerConstant.STAT_FLAG_FAILS);
+ boolean success = isWebHttpClientSuccess(resultCode);
+ statKey.setResult(success ? SofaTracerConstant.STAT_FLAG_SUCCESS
+ : SofaTracerConstant.STAT_FLAG_FAILS);
statKey.setEnd(buildString(new String[] { TracerUtils.getLoadTestMark(sofaTracerSpan) }));
//pressure mark
diff --git a/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatJsonReporter.java b/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatJsonReporter.java
index 1ed8a979..c4aa977d 100644
--- a/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatJsonReporter.java
+++ b/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatJsonReporter.java
@@ -46,8 +46,7 @@ public void doReportStat(SofaTracerSpan sofaTracerSpan) {
statKey.addKey(CommonSpanTags.METHOD, tagsWithStr.get(CommonSpanTags.METHOD));
//success
String resultCode = tagsWithStr.get(CommonSpanTags.RESULT_CODE);
- boolean success = (resultCode != null && resultCode.length() > 0 && this
- .isHttpOrMvcSuccess(resultCode));
+ boolean success = isWebHttpClientSuccess(resultCode);
statKey.setResult(success ? SofaTracerConstant.STAT_FLAG_SUCCESS
: SofaTracerConstant.STAT_FLAG_FAILS);
//pressure mark
diff --git a/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatReporter.java b/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatReporter.java
index 020b1f3f..af0d0eb2 100644
--- a/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatReporter.java
+++ b/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/RestTemplateStatReporter.java
@@ -45,12 +45,11 @@ public void doReportStat(SofaTracerSpan sofaTracerSpan) {
//method name
String methodName = tagsWithStr.get(CommonSpanTags.METHOD);
statKey.setKey(buildString(new String[] { localApp, requestUrl, methodName }));
-
+ //success
String resultCode = tagsWithStr.get(CommonSpanTags.RESULT_CODE);
- statKey
- .setResult(SofaTracerConstant.RESULT_CODE_SUCCESS.equals(resultCode) ? SofaTracerConstant.STAT_FLAG_SUCCESS
- : SofaTracerConstant.STAT_FLAG_FAILS);
-
+ boolean success = isWebHttpClientSuccess(resultCode);
+ statKey.setResult(success ? SofaTracerConstant.STAT_FLAG_SUCCESS
+ : SofaTracerConstant.STAT_FLAG_FAILS);
statKey.setEnd(buildString(new String[] { TracerUtils.getLoadTestMark(sofaTracerSpan) }));
//pressure mark
statKey.setLoadTest(TracerUtils.isLoadTest(sofaTracerSpan));
diff --git a/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/SofaTracerRestTemplateBuilder.java b/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/SofaTracerRestTemplateBuilder.java
index 4dbbdd92..b553d581 100644
--- a/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/SofaTracerRestTemplateBuilder.java
+++ b/sofa-tracer-plugins/sofa-tracer-resttmplate-plugin/src/main/java/com/sofa/alipay/tracer/plugins/rest/SofaTracerRestTemplateBuilder.java
@@ -46,6 +46,7 @@ public static RestTemplate buildRestTemplate() {
return restTemplate;
}
+ @Deprecated
public static AsyncRestTemplate buildAsyncRestTemplate() {
AsyncRestTemplate asyncRestTemplate = new AsyncRestTemplate();
List interceptors = new ArrayList();
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/constants/SofaTracerConstant.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/constants/SofaTracerConstant.java
index 819b733c..5ac755b0 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/constants/SofaTracerConstant.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/constants/SofaTracerConstant.java
@@ -115,9 +115,9 @@ public class SofaTracerConstant {
/**
* stat result state for success
*/
- public static final String STAT_FLAG_SUCCESS = "true";
+ public static final String STAT_FLAG_SUCCESS = DIGEST_FLAG_SUCCESS;
/**
* stat result state for failure
*/
- public static final String STAT_FLAG_FAILS = "false";
+ public static final String STAT_FLAG_FAILS = DIGEST_FLAG_FAILS;
}
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/context/span/SofaTracerSpanContext.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/context/span/SofaTracerSpanContext.java
index ad510c44..eead2258 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/context/span/SofaTracerSpanContext.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/context/span/SofaTracerSpanContext.java
@@ -230,11 +230,11 @@ public String serializeSpanContext() {
/**
*
* Deserialize and restore a SofaTracerSpanContext, reciprocal with {@link SofaTracerSpanContext#serializeSpanContext()}
- * @param deserializedValue deserialize string, format: tcid:0,spid:1
+ * @param deserializeValue deserialize string, format: tcid:0,spid:1
* @return SofaTracerSpanContext
*/
- public static SofaTracerSpanContext deserializeFromString(String deserializedValue) {
- if (StringUtils.isBlank(deserializedValue)) {
+ public static SofaTracerSpanContext deserializeFromString(String deserializeValue) {
+ if (StringUtils.isBlank(deserializeValue)) {
return SofaTracerSpanContext.rootStart();
}
//default value for SofaTracerSpanContext
@@ -249,7 +249,7 @@ public static SofaTracerSpanContext deserializeFromString(String deserializedVal
Map baggage = new HashMap();
Map spanContext = new HashMap();
- StringUtils.stringToMap(deserializedValue, spanContext);
+ StringUtils.stringToMap(deserializeValue, spanContext);
for (Map.Entry entry : spanContext.entrySet()) {
String key = entry.getKey();
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/registry/AbstractTextFormatter.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/registry/AbstractTextFormatter.java
index 350c4eca..ecc7dcbc 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/registry/AbstractTextFormatter.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/registry/AbstractTextFormatter.java
@@ -33,8 +33,7 @@ public abstract class AbstractTextFormatter implements RegistryExtractorInjector
@Override
public SofaTracerSpanContext extract(TextMap carrier) {
if (carrier == null) {
- //Root node starts
- return SofaTracerSpanContext.rootStart();
+ return null;
}
SofaTracerSpanContext sofaTracerSpanContext = null;
for (Map.Entry entry : carrier) {
@@ -49,8 +48,7 @@ public SofaTracerSpanContext extract(TextMap carrier) {
}
}
if (sofaTracerSpanContext == null) {
- //Root node starts
- return SofaTracerSpanContext.rootStart();
+ return null;
}
return sofaTracerSpanContext;
}
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/reporter/stat/AbstractSofaTracerStatisticReporter.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/reporter/stat/AbstractSofaTracerStatisticReporter.java
index 1c9058db..300cc978 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/reporter/stat/AbstractSofaTracerStatisticReporter.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/reporter/stat/AbstractSofaTracerStatisticReporter.java
@@ -23,6 +23,7 @@
import com.alipay.common.tracer.core.appender.self.SelfLog;
import com.alipay.common.tracer.core.appender.self.Timestamp;
import com.alipay.common.tracer.core.configuration.SofaTracerConfiguration;
+import com.alipay.common.tracer.core.constants.SofaTracerConstant;
import com.alipay.common.tracer.core.reporter.stat.manager.SofaTracerStatisticReporterCycleTimesManager;
import com.alipay.common.tracer.core.reporter.stat.manager.SofaTracerStatisticReporterManager;
import com.alipay.common.tracer.core.reporter.stat.model.StatKey;
@@ -360,4 +361,10 @@ protected boolean isHttpOrMvcSuccess(String resultCode) {
return resultCode.charAt(0) == '1' || resultCode.charAt(0) == '2'
|| "302".equals(resultCode.trim()) || ("301".equals(resultCode.trim()));
}
+
+ protected boolean isWebHttpClientSuccess(String resultCode) {
+ return StringUtils.isNotBlank(resultCode)
+ && (isHttpOrMvcSuccess(resultCode) || SofaTracerConstant.RESULT_CODE_SUCCESS
+ .equals(resultCode));
+ }
}
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/span/CommonSpanTags.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/span/CommonSpanTags.java
index c35a9657..8137b1a2 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/span/CommonSpanTags.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/span/CommonSpanTags.java
@@ -176,4 +176,5 @@ public class CommonSpanTags {
* LOAD_TEST is the span's stat log key for load.test
*/
public static final String LOAD_TEST = "load.test";
+
}
\ No newline at end of file
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/span/SofaTracerSpan.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/span/SofaTracerSpan.java
index 01cfa7e6..9e27a457 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/span/SofaTracerSpan.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/span/SofaTracerSpan.java
@@ -32,7 +32,13 @@
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
/**
* SofaTracerSpan
@@ -48,13 +54,13 @@ public class SofaTracerSpan implements Span {
private final List spanReferences;
/** tags for String */
- private final Map tagsWithStr = new LinkedHashMap();
+ private final Map tagsWithStr = new LinkedHashMap<>();
/** tags for Boolean */
- private final Map tagsWithBool = new LinkedHashMap();
+ private final Map tagsWithBool = new LinkedHashMap<>();
/** tags for Number */
- private final Map tagsWithNumber = new LinkedHashMap();
+ private final Map tagsWithNumber = new LinkedHashMap<>();
- private final List logs = new LinkedList();
+ private final List logs = new LinkedList<>();
private String operationName = StringUtils.EMPTY_STRING;
@@ -77,7 +83,7 @@ public class SofaTracerSpan implements Span {
public SofaTracerSpan cloneInstance() {
SofaTracerSpanContext spanContext = this.sofaTracerSpanContext.cloneInstance();
- Map tags = new HashMap();
+ Map tags = new HashMap<>();
tags.putAll(this.tagsWithBool);
tags.putAll(this.tagsWithStr);
tags.putAll(this.tagsWithNumber);
@@ -134,8 +140,7 @@ public SofaTracerSpan(SofaTracer sofaTracer, long startTime,
AssertUtils.notNull(sofaTracerSpanContext);
this.sofaTracer = sofaTracer;
this.startTime = startTime;
- this.spanReferences = spanReferences != null ? new ArrayList(
- spanReferences) : null;
+ this.spanReferences = spanReferences != null ? new ArrayList<>(spanReferences) : null;
this.operationName = operationName;
this.sofaTracerSpanContext = sofaTracerSpanContext;
this.setTags(tags);
@@ -211,7 +216,7 @@ public Span log(String eventValue) {
@Override
public Span log(long currentTime, String eventValue) {
AssertUtils.isTrue(currentTime >= startTime, "Current time must greater than start time");
- Map fields = new HashMap();
+ Map fields = new HashMap<>();
fields.put(LogData.EVENT_TYPE_KEY, eventValue);
return this.log(currentTime, fields);
}
@@ -246,7 +251,7 @@ public Span log(String eventName, /* @Nullable */Object payload) {
public Span log(long currentTime, String eventName, /* @Nullable */Object payload) {
//key:value
AssertUtils.isTrue(currentTime >= startTime, "current time must greater than start time");
- Map fields = new HashMap();
+ Map fields = new HashMap<>();
fields.put(eventName, payload);
return this.log(currentTime, fields);
}
@@ -294,7 +299,7 @@ public void reportError(String errorType, Map context, Throwable
String errorSourceApp, String... errorSources) {
Tags.ERROR.set(this, true);
//all tags set
- Map tags = new HashMap();
+ Map tags = new HashMap<>();
tags.putAll(this.getTagsWithStr());
tags.putAll(this.getTagsWithBool());
tags.putAll(this.getTagsWithNumber());
@@ -330,7 +335,7 @@ public void reportError(String errorType, Map context, Throwable
* @param profileMessage profileMessage
*/
public void profile(String profileApp, String protocolType, String profileMessage) {
- Map tags = new HashMap();
+ Map tags = new HashMap<>();
tags.putAll(this.getTagsWithStr());
tags.putAll(this.getTagsWithBool());
tags.putAll(this.getTagsWithNumber());
@@ -361,7 +366,7 @@ public SofaTracerSpan getThisAsParentWhenExceedLayer() {
if (StringUtils.countMatches(rpcId, '.') + 1 > SofaTracerConstant.MAX_LAYER) {
SofaTracerSpanContext parentSpanContext = SofaTracerSpanContext.rootStart();
// discard tags
- Map baggage = new HashMap();
+ Map baggage = new HashMap<>();
baggage.putAll(this.sofaTracerSpanContext.getBizBaggage());
parentSpanContext.addBizBaggage(baggage);
parent = new SofaTracerSpan(this.sofaTracer, System.currentTimeMillis(),
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/tags/SpanTags.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/tags/SpanTags.java
index 14fd5a9c..9131080b 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/tags/SpanTags.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/tags/SpanTags.java
@@ -16,6 +16,10 @@
*/
package com.alipay.common.tracer.core.tags;
+import com.alipay.common.tracer.core.appender.self.SelfLog;
+import com.alipay.common.tracer.core.constants.ComponentNameConstants;
+import com.alipay.common.tracer.core.holder.SofaTraceContextHolder;
+import com.alipay.common.tracer.core.span.SofaTracerSpan;
import io.opentracing.tag.StringTag;
/**
@@ -30,4 +34,39 @@ public class SpanTags {
* current span tags
*/
public static final StringTag CURR_APP_TAG = new StringTag("curr.app");
+
+ public static void putTags(String key, String val) {
+ SofaTracerSpan currentSpan = SofaTraceContextHolder.getSofaTraceContext().getCurrentSpan();
+ if (checkTags(currentSpan)) {
+ currentSpan.setTag(key, val);
+ }
+ }
+
+ public static void putTags(String key, Number val) {
+ SofaTracerSpan currentSpan = SofaTraceContextHolder.getSofaTraceContext().getCurrentSpan();
+ if (checkTags(currentSpan)) {
+ currentSpan.setTag(key, val);
+ }
+ }
+
+ public static void putTags(String key, Boolean val) {
+ SofaTracerSpan currentSpan = SofaTraceContextHolder.getSofaTraceContext().getCurrentSpan();
+ if (checkTags(currentSpan)) {
+ currentSpan.setTag(key, val);
+ }
+ }
+
+ private static boolean checkTags(SofaTracerSpan currentSpan) {
+ if (currentSpan == null) {
+ SelfLog.error("Current stage has no span exist in SofaTracerContext.");
+ return false;
+ }
+ String componentType = currentSpan.getSofaTracer().getTracerType();
+ if (!componentType.equalsIgnoreCase(ComponentNameConstants.FLEXIBLE)) {
+ SelfLog.error("Cannot set tag to component. current component is [" + componentType
+ + "]");
+ return false;
+ }
+ return true;
+ }
}
diff --git a/tracer-core/src/main/java/com/alipay/common/tracer/core/tracer/AbstractClientTracer.java b/tracer-core/src/main/java/com/alipay/common/tracer/core/tracer/AbstractClientTracer.java
index d5c7cdc8..6669fa55 100644
--- a/tracer-core/src/main/java/com/alipay/common/tracer/core/tracer/AbstractClientTracer.java
+++ b/tracer-core/src/main/java/com/alipay/common/tracer/core/tracer/AbstractClientTracer.java
@@ -33,22 +33,27 @@ public AbstractClientTracer(String tracerType) {
super(tracerType, true, false);
}
+ @Override
protected String getServerDigestReporterLogName() {
return null;
}
+ @Override
protected String getServerDigestReporterRollingKey() {
return null;
}
+ @Override
protected String getServerDigestReporterLogNameKey() {
return null;
}
+ @Override
protected SpanEncoder getServerDigestEncoder() {
return null;
}
+ @Override
protected AbstractSofaTracerStatisticReporter generateServerStatReporter() {
return null;
}
diff --git a/tracer-core/src/test/java/com/alipay/common/tracer/core/reporter/common/CommonTracerManagerTest.java b/tracer-core/src/test/java/com/alipay/common/tracer/core/reporter/common/CommonTracerManagerTest.java
index 8e210b80..3edb4575 100644
--- a/tracer-core/src/test/java/com/alipay/common/tracer/core/reporter/common/CommonTracerManagerTest.java
+++ b/tracer-core/src/test/java/com/alipay/common/tracer/core/reporter/common/CommonTracerManagerTest.java
@@ -27,7 +27,6 @@
import org.junit.Test;
import java.io.File;
-import java.io.IOException;
import java.util.List;
import static org.junit.Assert.assertTrue;
diff --git a/tracer-core/src/test/java/com/alipay/common/tracer/core/tracer/AbstractServerTracerTest.java b/tracer-core/src/test/java/com/alipay/common/tracer/core/tracer/AbstractServerTracerTest.java
index aa5dee73..4123bff8 100644
--- a/tracer-core/src/test/java/com/alipay/common/tracer/core/tracer/AbstractServerTracerTest.java
+++ b/tracer-core/src/test/java/com/alipay/common/tracer/core/tracer/AbstractServerTracerTest.java
@@ -18,6 +18,7 @@
import com.alipay.common.tracer.core.appender.encoder.SpanEncoder;
import com.alipay.common.tracer.core.context.span.SofaTracerSpanContext;
+import com.alipay.common.tracer.core.holder.SofaTraceContextHolder;
import com.alipay.common.tracer.core.reporter.stat.AbstractSofaTracerStatisticReporter;
import com.alipay.common.tracer.core.span.SofaTracerSpan;
import org.junit.Assert;
@@ -82,10 +83,11 @@ public void testServerReceive_null() {
*/
@Test
public void testServerReceive_sofaTracerSpanContext() {
+ SofaTraceContextHolder.getSofaTraceContext().clear();
// sofaTracerSpanContext's sampler is false
SofaTracerSpanContext sofaTracerSpanContext = new SofaTracerSpanContext("123", "0");
- SofaTracerSpan sofaTracerSpan1 = serverTracer.serverReceive(sofaTracerSpanContext);
- Assert.assertTrue(!sofaTracerSpan1.getSofaTracerSpanContext().isSampled());
+ SofaTracerSpan sofaTracerSpan = serverTracer.serverReceive(sofaTracerSpanContext);
+ Assert.assertTrue(!sofaTracerSpan.getSofaTracerSpanContext().isSampled());
}
@Test