fix ot scope close

pull/1664/head
shedfreewu 2 months ago
parent 80cc693889
commit a9d7b2af16

@ -28,6 +28,7 @@ import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
import com.tencent.cloud.plugin.gateway.context.Position;
import com.tencent.cloud.polaris.context.PolarisSDKContextManager;
import com.tencent.polaris.api.utils.ClassUtils;
import com.tencent.polaris.api.utils.StringUtils;
import com.tencent.polaris.assembly.api.AssemblyAPI;
import com.tencent.polaris.assembly.api.pojo.TraceAttributes;
@ -39,6 +40,7 @@ import com.tencent.tsf.gateway.core.http.HttpConnectionPoolUtil;
import com.tencent.tsf.gateway.core.model.OAuthPlugin;
import com.tencent.tsf.gateway.core.model.OAuthResult;
import com.tencent.tsf.gateway.core.model.PluginPayload;
import io.opentelemetry.context.Scope;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -196,7 +198,7 @@ public class OAuthGatewayPlugin implements IGatewayPlugin<OAuthPlugin> {
throw new TsfGatewayException(TsfGatewayError.GATEWAY_REQUEST_NOT_FOUND, "Unable to find instance for " + pluginInfo.getTokenAuthServiceName());
}
fillTracingContext(namespace, serviceName);
Object otScope = fillTracingContext(namespace, serviceName);
String newRequestUrl = uri.getScheme() + "://" + GATEWAY_WILDCARD_SERVICE_NAME + tokenAuthUrl;
URI newUri = new URI(newRequestUrl);
@ -204,7 +206,12 @@ public class OAuthGatewayPlugin implements IGatewayPlugin<OAuthPlugin> {
// http://127.0.0.1:8080/group1/namespace1/Consumer-demo/echo-rest/1?user=1
URI requestUrl = this.reconstructURI(new OauthDelegatingServiceInstance(instance.getServer()), newUri);
logger.debug("LoadBalancerClientFilter url chosen: " + requestUrl);
return sendAuthRequestByHttpMethod(paramsMap, headerParamsMap, requestUrl.toASCIIString(), tokenAuthMethod, timeout);
String result = sendAuthRequestByHttpMethod(paramsMap, headerParamsMap, requestUrl.toASCIIString(), tokenAuthMethod, timeout);
if (ClassUtils.isClassPresent("io.opentelemetry.context.Scope") && otScope instanceof Scope) {
((Scope) otScope).close();
}
return result;
}
catch (Exception e) {
logger.error("MicroService {} Request Auth Server Error", tokenAuthMethod, e);
@ -244,7 +251,7 @@ public class OAuthGatewayPlugin implements IGatewayPlugin<OAuthPlugin> {
}
}
void fillTracingContext(String namespace, String serviceName) {
Object fillTracingContext(String namespace, String serviceName) {
Map<String, String> attributes = new HashMap<>();
attributes.put("net.peer.service", serviceName);
@ -256,6 +263,8 @@ public class OAuthGatewayPlugin implements IGatewayPlugin<OAuthPlugin> {
AssemblyAPI assemblyAPI = polarisSDKContextManager.getAssemblyAPI();
assemblyAPI.updateTraceAttributes(traceAttributes);
return traceAttributes.getOtScope();
}
class OauthDelegatingServiceInstance implements ServiceInstance {

Loading…
Cancel
Save