From f5c1e56cfdc0b147f3e93ec49b94e87f97d453ce Mon Sep 17 00:00:00 2001 From: skyehtzhang Date: Sat, 2 Apr 2022 11:22:46 +0800 Subject: [PATCH] fix:fix fetching wrong PEER_SERVICE in SCG filter. --- .../gateway/MetadataFirstScgFilter.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/filter/gateway/MetadataFirstScgFilter.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/filter/gateway/MetadataFirstScgFilter.java index 97e6ac4dd..ab02b3b98 100644 --- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/filter/gateway/MetadataFirstScgFilter.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/filter/gateway/MetadataFirstScgFilter.java @@ -55,25 +55,27 @@ public class MetadataFirstScgFilter implements GlobalFilter, Ordered { Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR); // get metadata of current thread - MetadataContext metadataContext = exchange - .getAttribute(MetadataConstant.HeaderName.METADATA_CONTEXT); + MetadataContext metadataContext = exchange.getAttribute(MetadataConstant.HeaderName.METADATA_CONTEXT); if (metadataContext == null) { metadataContext = MetadataContextHolder.get(); } // TODO The peer namespace is temporarily the same as the local namespace - metadataContext.putSystemMetadata( - MetadataConstant.SystemMetadataKey.PEER_NAMESPACE, + metadataContext.putSystemMetadata(MetadataConstant.SystemMetadataKey.PEER_NAMESPACE, MetadataContext.LOCAL_NAMESPACE); - metadataContext.putSystemMetadata(MetadataConstant.SystemMetadataKey.PEER_SERVICE, - route.getUri().getAuthority()); + if (route != null) { + metadataContext.putSystemMetadata(MetadataConstant.SystemMetadataKey.PEER_SERVICE, + route.getUri().getAuthority()); + } + else { + metadataContext.putSystemMetadata(MetadataConstant.SystemMetadataKey.PEER_SERVICE, + exchange.getRequest().getURI().getAuthority()); + } metadataContext.putSystemMetadata(MetadataConstant.SystemMetadataKey.PEER_PATH, exchange.getRequest().getURI().getPath()); - exchange.getAttributes().put(MetadataConstant.HeaderName.METADATA_CONTEXT, - metadataContext); + exchange.getAttributes().put(MetadataConstant.HeaderName.METADATA_CONTEXT, metadataContext); return chain.filter(exchange); } - }