From 3c309388efcec61855c5c6435a5e9d861a246005 Mon Sep 17 00:00:00 2001 From: lepdou Date: Thu, 29 Sep 2022 17:53:41 +0800 Subject: [PATCH] add change log --- CHANGELOG.md | 1 + .../core/DecodeTransferMetadataReactiveFilter.java | 11 ++++------- .../core/DecodeTransferMetadataServletFilter.java | 6 +++--- .../metadata/core/EncodeTransferMedataScgFilter.java | 11 ++++------- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bb259740..01b1331d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,5 +8,6 @@ - [Automatically transmit some headers specified by a environment varaible that directly defines header keys.](https://github.com/Tencent/spring-cloud-tencent/pull/606) - [Optimize: Maybe remove Chinese characters](https://github.com/Tencent/spring-cloud-tencent/pull/607) - [ fix pr #606 cause ci fail](https://github.com/Tencent/spring-cloud-tencent/pull/613) +- [Bugfix: fix feign report call result error when using feign direct call](https://github.com/Tencent/spring-cloud-tencent/pull/621) - [fix pr 606: modify a part of changes requested by review.](https://github.com/Tencent/spring-cloud-tencent/pull/620) - [fix pr 613: modify a judgment logic](https://github.com/Tencent/spring-cloud-tencent/pull/618) diff --git a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java index c5ce5bfbc..eca88b076 100644 --- a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java +++ b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java @@ -22,7 +22,6 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -99,22 +98,20 @@ public class DecodeTransferMetadataReactiveFilter implements WebFilter, Ordered */ private void setCompleteTransHeaderIntoMC(ServerHttpRequest serverHttpRequest) { // transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}} - Map transHeaderMetadata = MetadataContextHolder.get() + Map transHeaderMetadata = MetadataContextHolder.get() .getFragmentContext(FRAGMENT_RAW_TRANSHEADERS); if (!CollectionUtils.isEmpty(transHeaderMetadata)) { String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse(""); String[] transHeaderArray = transHeaders.split(","); HttpHeaders headers = serverHttpRequest.getHeaders(); Set headerKeys = headers.keySet(); - Iterator iterator = headerKeys.iterator(); - while (iterator.hasNext()) { - String httpHeader = iterator.next(); + for (String httpHeader : headerKeys) { Arrays.stream(transHeaderArray).forEach(transHeader -> { if (transHeader.equals(httpHeader)) { List list = headers.get(httpHeader); String httpHeaderValue = JacksonUtils.serialize2Json(list); - MetadataContextHolder.get().putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); - return; + MetadataContextHolder.get() + .putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); } }); } diff --git a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java index 4432a41c3..b446af2e6 100644 --- a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java +++ b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java @@ -86,7 +86,7 @@ public class DecodeTransferMetadataServletFilter extends OncePerRequestFilter { */ private void setCompleteTransHeaderIntoMC(HttpServletRequest httpServletRequest) { // transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}} - Map transHeaderMetadata = MetadataContextHolder.get() + Map transHeaderMetadata = MetadataContextHolder.get() .getFragmentContext(FRAGMENT_RAW_TRANSHEADERS); if (!CollectionUtils.isEmpty(transHeaderMetadata)) { String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse(""); @@ -98,8 +98,8 @@ public class DecodeTransferMetadataServletFilter extends OncePerRequestFilter { if (transHeader.equals(httpHeader)) { String httpHeaderValue = httpServletRequest.getHeader(httpHeader); // for example, {"trans-headers-kv" : {"header1":"v1","header2":"v2"...}} - MetadataContextHolder.get().putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); - return; + MetadataContextHolder.get() + .putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); } }); } diff --git a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java index 348d6d0c5..c33f5bbca 100644 --- a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java +++ b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java @@ -22,7 +22,6 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -97,23 +96,21 @@ public class EncodeTransferMedataScgFilter implements GlobalFilter, Ordered { */ private void setCompleteTransHeaderIntoMC(ServerHttpRequest serverHttpRequest) { // transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}} - Map transHeaderMetadata = MetadataContextHolder.get() + Map transHeaderMetadata = MetadataContextHolder.get() .getFragmentContext(FRAGMENT_RAW_TRANSHEADERS); if (!CollectionUtils.isEmpty(transHeaderMetadata)) { String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse(""); String[] transHeaderArray = transHeaders.split(","); HttpHeaders headers = serverHttpRequest.getHeaders(); Set headerKeys = headers.keySet(); - Iterator iterator = headerKeys.iterator(); - while (iterator.hasNext()) { - String httpHeader = iterator.next(); + for (String httpHeader : headerKeys) { Arrays.stream(transHeaderArray).forEach(transHeader -> { if (transHeader.equals(httpHeader)) { List list = headers.get(httpHeader); String httpHeaderValue = JacksonUtils.serialize2Json(list); // for example, {"trans-headers-kv" : {"header1":"v1","header2":"v2"...}} - MetadataContextHolder.get().putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); - return; + MetadataContextHolder.get() + .putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); } }); }