Skip to content

Commit 321b7d7

Browse files
committed
fix:fix RestTemplate trace attribute loss bug.
1 parent 3ccc5eb commit 321b7d7

File tree

5 files changed

+37
-12
lines changed

5 files changed

+37
-12
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@
1111
- [fix: fix loadbalancer metadata type.](https://github.com/Tencent/spring-cloud-tencent/pull/1624)
1212
- [feat:support polaris server nearby backup LB.](https://github.com/Tencent/spring-cloud-tencent/pull/1629)
1313
- fix:fix ipv6 instance not found bug.
14-
- fix:fix tsf lossless not working bug.
14+
- fix:fix tsf lossless not working bug.
15+
- fix:fix RestTemplate trace attribute loss bug.

spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package com.tencent.cloud.polaris.circuitbreaker.reporter;
1919

2020
import com.tencent.cloud.common.constant.ContextConstant;
21-
import com.tencent.cloud.common.metadata.MetadataContext;
2221
import com.tencent.cloud.common.metadata.MetadataContextHolder;
2322
import com.tencent.cloud.polaris.circuitbreaker.PolarisCircuitBreaker;
2423
import com.tencent.cloud.polaris.circuitbreaker.instrument.resttemplate.PolarisCircuitBreakerHttpResponse;
@@ -28,7 +27,6 @@
2827
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedRequestContext;
2928
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedResponseContext;
3029
import com.tencent.cloud.rpc.enhancement.plugin.reporter.SuccessPolarisReporter;
31-
import com.tencent.polaris.api.utils.StringUtils;
3230
import com.tencent.polaris.circuitbreak.client.exception.CallAbortedException;
3331
import com.tencent.polaris.metadata.core.MetadataType;
3432
import org.slf4j.Logger;
@@ -70,9 +68,9 @@ public void run(EnhancedPluginContext context) throws Throwable {
7068
EnhancedRequestContext request = context.getRequest();
7169
EnhancedResponseContext response = context.getResponse();
7270

73-
String host = request.getServiceUrl() != null ? request.getServiceUrl().getHost() : request.getUrl().getHost();
74-
String path = request.getServiceUrl() != null ? request.getServiceUrl().getPath() : request.getUrl().getPath();
75-
String governanceNamespace = StringUtils.isNotEmpty(request.getGovernanceNamespace()) ? request.getGovernanceNamespace() : MetadataContext.LOCAL_NAMESPACE;
71+
String host = request.getHost();
72+
String path = request.getPath();
73+
String governanceNamespace = request.getGovernanceNamespace();
7674

7775
String httpMethod = request.getHttpMethod().name();
7876

spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-trace-plugin/src/main/java/com/tencent/cloud/plugin/trace/attribute/PolarisSpanAttributesProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public Map<String, String> getClientBaggageAttributes(EnhancedPluginContext cont
8484
}
8585
attributes.put("http.port", CalleeMetadataContainerGroup.getStaticApplicationMetadataContainer()
8686
.getRawMetadataStringValue(MetadataConstants.LOCAL_PORT));
87-
attributes.put("net.peer.service", context.getTargetServiceInstance().getServiceId());
87+
attributes.put("net.peer.service", context.getRequest().getHost());
8888

8989
String serviceLane = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false)
9090
.getRawMetadataMapValue(MessageMetadataContainer.LABEL_MAP_KEY_HEADER, TRAFFIC_STAIN_LABEL);

spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-trace-plugin/src/main/java/com/tencent/cloud/plugin/trace/attribute/tsf/TsfSpanAttributesProvider.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public class TsfSpanAttributesProvider implements SpanAttributesProvider {
3333
@Override
3434
public Map<String, String> getClientBaggageAttributes(EnhancedPluginContext context) {
3535
Map<String, String> attributes = new HashMap<>();
36-
if (null != context.getRequest().getUrl()) {
37-
attributes.put("remoteInterface", context.getRequest().getUrl().getPath());
36+
if (context.getRequest() != null && StringUtils.isNotBlank(context.getRequest().getPath())) {
37+
attributes.put("remoteInterface", context.getRequest().getPath());
3838
}
3939
ServiceInstance targetServiceInstance = context.getTargetServiceInstance();
4040
if (null != targetServiceInstance && CollectionUtils.isNotEmpty(targetServiceInstance.getMetadata())) {
@@ -51,6 +51,9 @@ public Map<String, String> getClientBaggageAttributes(EnhancedPluginContext cont
5151
targetServiceInstance.getMetadata().get(TsfMetadataConstants.TSF_APPLICATION_ID)));
5252
}
5353
}
54+
if (StringUtils.isBlank(attributes.get("remote.namespace-id"))) {
55+
attributes.put("remote.namespace-id", context.getRequest().getGovernanceNamespace());
56+
}
5457
return attributes;
5558
}
5659
}

spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/plugin/EnhancedRequestContext.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919

2020
import java.net.URI;
2121

22+
import com.tencent.cloud.common.metadata.MetadataContext;
23+
import com.tencent.polaris.api.utils.StringUtils;
24+
2225
import org.springframework.http.HttpHeaders;
2326
import org.springframework.http.HttpMethod;
2427

@@ -39,6 +42,10 @@ public class EnhancedRequestContext {
3942

4043
private String governanceNamespace;
4144

45+
public static EnhancedContextRequestBuilder builder() {
46+
return new EnhancedContextRequestBuilder();
47+
}
48+
4249
public HttpMethod getHttpMethod() {
4350
return httpMethod;
4451
}
@@ -72,15 +79,31 @@ public void setServiceUrl(URI serviceUrl) {
7279
}
7380

7481
public String getGovernanceNamespace() {
75-
return governanceNamespace;
82+
return StringUtils.isNotEmpty(governanceNamespace) ? governanceNamespace : MetadataContext.LOCAL_NAMESPACE;
7683
}
7784

7885
public void setGovernanceNamespace(String governanceNamespace) {
7986
this.governanceNamespace = governanceNamespace;
8087
}
8188

82-
public static EnhancedContextRequestBuilder builder() {
83-
return new EnhancedContextRequestBuilder();
89+
public String getHost() {
90+
if (serviceUrl != null) {
91+
return serviceUrl.getHost();
92+
}
93+
if (url != null) {
94+
return url.getHost();
95+
}
96+
return null;
97+
}
98+
99+
public String getPath() {
100+
if (serviceUrl != null) {
101+
return serviceUrl.getPath();
102+
}
103+
if (url != null) {
104+
return url.getPath();
105+
}
106+
return null;
84107
}
85108

86109
@Override

0 commit comments

Comments
 (0)