fix:fix RestTemplate trace attribute loss bug.

Haotian Zhang 2 months ago
parent de3f93a870
commit b60de5dd91

@ -18,7 +18,6 @@
package com.tencent.cloud.polaris.circuitbreaker.reporter;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.polaris.circuitbreaker.PolarisCircuitBreaker;
import com.tencent.cloud.polaris.circuitbreaker.instrument.resttemplate.PolarisCircuitBreakerHttpResponse;
@ -28,7 +27,6 @@ import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedRequestContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedResponseContext;
import com.tencent.cloud.rpc.enhancement.plugin.reporter.SuccessPolarisReporter;
import com.tencent.polaris.api.utils.StringUtils;
import com.tencent.polaris.circuitbreak.client.exception.CallAbortedException;
import com.tencent.polaris.metadata.core.MetadataType;
import org.slf4j.Logger;
@ -70,9 +68,9 @@ public class CircuitBreakerPlugin implements EnhancedPlugin {
EnhancedRequestContext request = context.getRequest();
EnhancedResponseContext response = context.getResponse();
String host = request.getServiceUrl() != null ? request.getServiceUrl().getHost() : request.getUrl().getHost();
String path = request.getServiceUrl() != null ? request.getServiceUrl().getPath() : request.getUrl().getPath();
String governanceNamespace = StringUtils.isNotEmpty(request.getGovernanceNamespace()) ? request.getGovernanceNamespace() : MetadataContext.LOCAL_NAMESPACE;
String host = request.getHost();
String path = request.getPath();
String governanceNamespace = request.getGovernanceNamespace();
String httpMethod = request.getHttpMethod().name();

@ -84,7 +84,7 @@ public class PolarisSpanAttributesProvider implements SpanAttributesProvider {
}
attributes.put("http.port", CalleeMetadataContainerGroup.getStaticApplicationMetadataContainer()
.getRawMetadataStringValue(MetadataConstants.LOCAL_PORT));
attributes.put("net.peer.service", context.getTargetServiceInstance().getServiceId());
attributes.put("net.peer.service", context.getRequest().getHost());
String serviceLane = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false)
.getRawMetadataMapValue(MessageMetadataContainer.LABEL_MAP_KEY_HEADER, TRAFFIC_STAIN_LABEL);

@ -33,8 +33,8 @@ public class TsfSpanAttributesProvider implements SpanAttributesProvider {
@Override
public Map<String, String> getClientBaggageAttributes(EnhancedPluginContext context) {
Map<String, String> attributes = new HashMap<>();
if (null != context.getRequest().getUrl()) {
attributes.put("remoteInterface", context.getRequest().getUrl().getPath());
if (context.getRequest() != null && StringUtils.isNotBlank(context.getRequest().getPath())) {
attributes.put("remoteInterface", context.getRequest().getPath());
}
ServiceInstance targetServiceInstance = context.getTargetServiceInstance();
if (null != targetServiceInstance && CollectionUtils.isNotEmpty(targetServiceInstance.getMetadata())) {
@ -51,6 +51,9 @@ public class TsfSpanAttributesProvider implements SpanAttributesProvider {
targetServiceInstance.getMetadata().get(TsfMetadataConstants.TSF_APPLICATION_ID)));
}
}
if (StringUtils.isBlank(attributes.get("remote.namespace-id"))) {
attributes.put("remote.namespace-id", context.getRequest().getGovernanceNamespace());
}
return attributes;
}
}

@ -19,6 +19,9 @@ package com.tencent.cloud.rpc.enhancement.plugin;
import java.net.URI;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.polaris.api.utils.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
@ -39,6 +42,10 @@ public class EnhancedRequestContext {
private String governanceNamespace;
public static EnhancedContextRequestBuilder builder() {
return new EnhancedContextRequestBuilder();
}
public HttpMethod getHttpMethod() {
return httpMethod;
}
@ -72,15 +79,31 @@ public class EnhancedRequestContext {
}
public String getGovernanceNamespace() {
return governanceNamespace;
return StringUtils.isNotEmpty(governanceNamespace) ? governanceNamespace : MetadataContext.LOCAL_NAMESPACE;
}
public void setGovernanceNamespace(String governanceNamespace) {
this.governanceNamespace = governanceNamespace;
}
public static EnhancedContextRequestBuilder builder() {
return new EnhancedContextRequestBuilder();
public String getHost() {
if (serviceUrl != null) {
return serviceUrl.getHost();
}
if (url != null) {
return url.getHost();
}
return null;
}
public String getPath() {
if (serviceUrl != null) {
return serviceUrl.getPath();
}
if (url != null) {
return url.getPath();
}
return null;
}
@Override

Loading…
Cancel
Save