feat:compatible metadata transfer with TSF SDK version 1.x. (#1736)

Signed-off-by: Haotian Zhang <928016560@qq.com>
2021
Haotian Zhang 2 weeks ago committed by GitHub
parent 78a937f961
commit 764975efad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -26,3 +26,4 @@
- [feat: support service registry and discovery with Polaris and Nacos](https://github.com/Tencent/spring-cloud-tencent/pull/1728) - [feat: support service registry and discovery with Polaris and Nacos](https://github.com/Tencent/spring-cloud-tencent/pull/1728)
- [test:add junit tests to sct-common.](https://github.com/Tencent/spring-cloud-tencent/pull/1730) - [test:add junit tests to sct-common.](https://github.com/Tencent/spring-cloud-tencent/pull/1730)
- [test:add junit tests to sct-gw-plugin.](https://github.com/Tencent/spring-cloud-tencent/pull/1732) - [test:add junit tests to sct-gw-plugin.](https://github.com/Tencent/spring-cloud-tencent/pull/1732)
- [feat:compatible metadata transfer with TSF SDK version 1.x.](https://github.com/Tencent/spring-cloud-tencent/pull/1736)

@ -71,23 +71,22 @@ public class EncodeTransferMedataFeignEnhancedPlugin implements EnhancedPlugin {
MessageMetadataContainer calleeMessageMetadataContainer = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false); MessageMetadataContainer calleeMessageMetadataContainer = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false);
Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders(); Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders();
if (TsfContextUtils.isOnlyTsfConsulEnabled()) { if (TsfContextUtils.isTsfConsulEnabled()) {
Map<String, String> tsfMetadataMap = TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata); Map<String, String> tsfMetadataMap = TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata);
this.buildHeaderMap(request, tsfMetadataMap); this.buildHeaderMap(request, tsfMetadataMap);
} }
else { // currently only support transitive header from calleeMessageMetadataContainer
// currently only support transitive header from calleeMessageMetadataContainer this.buildHeaderMap(request, calleeTransitiveHeaders);
this.buildHeaderMap(request, calleeTransitiveHeaders);
// build custom disposable metadata request header // build custom disposable metadata request header
this.buildMetadataHeader(request, disposableMetadata, CUSTOM_DISPOSABLE_METADATA); this.buildMetadataHeader(request, disposableMetadata, CUSTOM_DISPOSABLE_METADATA);
// process custom metadata // process custom metadata
this.buildMetadataHeader(request, customMetadata, CUSTOM_METADATA); this.buildMetadataHeader(request, customMetadata, CUSTOM_METADATA);
// add application metadata
this.buildMetadataHeader(request, applicationMetadata, APPLICATION_METADATA);
// add application metadata
this.buildMetadataHeader(request, applicationMetadata, APPLICATION_METADATA);
}
// set headers that need to be transmitted from the upstream // set headers that need to be transmitted from the upstream
this.buildTransmittedHeader(request, transHeaders); this.buildTransmittedHeader(request, transHeaders);
} }

@ -68,23 +68,22 @@ public class EncodeTransferMedataRestTemplateEnhancedPlugin implements EnhancedP
MessageMetadataContainer calleeMessageMetadataContainer = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false); MessageMetadataContainer calleeMessageMetadataContainer = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false);
Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders(); Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders();
if (TsfContextUtils.isOnlyTsfConsulEnabled()) { if (TsfContextUtils.isTsfConsulEnabled()) {
Map<String, String> tsfMetadataMap = TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata); Map<String, String> tsfMetadataMap = TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata);
this.buildHeaderMap(httpRequest, tsfMetadataMap); this.buildHeaderMap(httpRequest, tsfMetadataMap);
} }
else { // currently only support transitive header from calleeMessageMetadataContainer
// currently only support transitive header from calleeMessageMetadataContainer this.buildHeaderMap(httpRequest, calleeTransitiveHeaders);
this.buildHeaderMap(httpRequest, calleeTransitiveHeaders);
// build custom disposable metadata request header // build custom disposable metadata request header
this.buildMetadataHeader(httpRequest, disposableMetadata, CUSTOM_DISPOSABLE_METADATA); this.buildMetadataHeader(httpRequest, disposableMetadata, CUSTOM_DISPOSABLE_METADATA);
// build custom metadata request header // build custom metadata request header
this.buildMetadataHeader(httpRequest, customMetadata, CUSTOM_METADATA); this.buildMetadataHeader(httpRequest, customMetadata, CUSTOM_METADATA);
// build application metadata request header
this.buildMetadataHeader(httpRequest, applicationMetadata, APPLICATION_METADATA);
// build application metadata request header
this.buildMetadataHeader(httpRequest, applicationMetadata, APPLICATION_METADATA);
}
// set headers that need to be transmitted from the upstream // set headers that need to be transmitted from the upstream
this.buildTransmittedHeader(httpRequest, transHeaders); this.buildTransmittedHeader(httpRequest, transHeaders);
} }

@ -75,17 +75,15 @@ public class EncodeTransferMedataScgEnhancedPlugin implements EnhancedPlugin {
MessageMetadataContainer calleeMessageMetadataContainer = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false); MessageMetadataContainer calleeMessageMetadataContainer = metadataContext.getMetadataContainer(MetadataType.MESSAGE, false);
Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders(); Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders();
if (TsfContextUtils.isOnlyTsfConsulEnabled()) { if (TsfContextUtils.isTsfConsulEnabled()) {
this.buildHeaderMap(builder, TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata)); this.buildHeaderMap(builder, TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata));
} }
else { // currently only support transitive header from calleeMessageMetadataContainer
// currently only support transitive header from calleeMessageMetadataContainer this.buildHeaderMap(builder, calleeTransitiveHeaders);
this.buildHeaderMap(builder, calleeTransitiveHeaders);
this.buildMetadataHeader(builder, customMetadata, CUSTOM_METADATA); this.buildMetadataHeader(builder, customMetadata, CUSTOM_METADATA);
this.buildMetadataHeader(builder, disposableMetadata, CUSTOM_DISPOSABLE_METADATA); this.buildMetadataHeader(builder, disposableMetadata, CUSTOM_DISPOSABLE_METADATA);
this.buildMetadataHeader(builder, applicationMetadata, APPLICATION_METADATA); this.buildMetadataHeader(builder, applicationMetadata, APPLICATION_METADATA);
}
TransHeadersTransfer.transfer(exchange.getRequest()); TransHeadersTransfer.transfer(exchange.getRequest());
context.setOriginRequest(exchange.mutate().request(builder.build()).build()); context.setOriginRequest(exchange.mutate().request(builder.build()).build());

@ -67,17 +67,15 @@ public class EncodeTransferMedataWebClientEnhancedPlugin implements EnhancedPlug
Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders(); Map<String, String> calleeTransitiveHeaders = calleeMessageMetadataContainer.getTransitiveHeaders();
ClientRequest.Builder requestBuilder = ClientRequest.from(clientRequest); ClientRequest.Builder requestBuilder = ClientRequest.from(clientRequest);
if (TsfContextUtils.isOnlyTsfConsulEnabled()) { if (TsfContextUtils.isTsfConsulEnabled()) {
this.buildHeaderMap(requestBuilder, TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata)); this.buildHeaderMap(requestBuilder, TsfTagUtils.getTsfMetadataMap(calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata));
} }
else { // currently only support transitive header from calleeMessageMetadataContainer
// currently only support transitive header from calleeMessageMetadataContainer this.buildHeaderMap(requestBuilder, calleeTransitiveHeaders);
this.buildHeaderMap(requestBuilder, calleeTransitiveHeaders);
this.buildMetadataHeader(requestBuilder, customMetadata, CUSTOM_METADATA); this.buildMetadataHeader(requestBuilder, customMetadata, CUSTOM_METADATA);
this.buildMetadataHeader(requestBuilder, disposableMetadata, CUSTOM_DISPOSABLE_METADATA); this.buildMetadataHeader(requestBuilder, disposableMetadata, CUSTOM_DISPOSABLE_METADATA);
this.buildMetadataHeader(requestBuilder, applicationMetadata, APPLICATION_METADATA); this.buildMetadataHeader(requestBuilder, applicationMetadata, APPLICATION_METADATA);
}
this.buildTransmittedHeader(requestBuilder, transHeaders); this.buildTransmittedHeader(requestBuilder, transHeaders);
context.setOriginRequest(requestBuilder.build()); context.setOriginRequest(requestBuilder.build());
} }

@ -85,4 +85,13 @@ public final class TsfContextUtils {
public static boolean isOnlyTsfConsulEnabled() { public static boolean isOnlyTsfConsulEnabled() {
return onlyTsfConsulEnabled; return onlyTsfConsulEnabled;
} }
/**
* This method should be called after {@link com.tencent.cloud.common.tsf.TsfContextUtils#isTsfConsulEnabled(Environment)}.
* @return whether Tsf Consul is enabled
*/
public static boolean isTsfConsulEnabled() {
return tsfConsulEnabled;
}
} }

@ -77,7 +77,7 @@ public final class TsfTagUtils {
if (tsfUserTagKeys.contains(entry.getKey())) { if (tsfUserTagKeys.contains(entry.getKey())) {
continue; continue;
} }
Tag tag = new Tag(entry.getKey(), entry.getValue(), Tag.ControlFlag.TRANSITIVE); Tag tag = new Tag(entry.getKey(), entry.getValue(), Tag.ControlFlag.TRANSITIVE);
tsfUserTags.add(tag); tsfUserTags.add(tag);
tsfUserTagKeys.add(entry.getKey()); tsfUserTagKeys.add(entry.getKey());
if (LaneRouter.TRAFFIC_STAIN_LABEL.equals(entry.getKey()) && entry.getValue().contains("/")) { if (LaneRouter.TRAFFIC_STAIN_LABEL.equals(entry.getKey()) && entry.getValue().contains("/")) {
@ -89,7 +89,7 @@ public final class TsfTagUtils {
if (tsfUserTagKeys.contains(entry.getKey())) { if (tsfUserTagKeys.contains(entry.getKey())) {
continue; continue;
} }
Tag tag = new Tag(entry.getKey(), entry.getValue()); Tag tag = new Tag(entry.getKey(), entry.getValue());
tsfUserTags.add(tag); tsfUserTags.add(tag);
tsfUserTagKeys.add(entry.getKey()); tsfUserTagKeys.add(entry.getKey());
} }
@ -156,7 +156,7 @@ public final class TsfTagUtils {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("calleeTransitiveHeaders:{}, disposableMetadata: {}, customMetadata: {}, applicationMetadata: {}, tsfMetadataMap:{}", LOGGER.debug("calleeTransitiveHeaders:{}, disposableMetadata: {}, customMetadata: {}, applicationMetadata: {}, tsfMetadataMap:{}",
calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata, tsfMetadataMap); calleeTransitiveHeaders, disposableMetadata, customMetadata, applicationMetadata, tsfMetadataMap);
} }
return tsfMetadataMap; return tsfMetadataMap;
@ -164,9 +164,9 @@ public final class TsfTagUtils {
public static void updateTsfMetadata(Map<String, String> mergedTransitiveMetadata, public static void updateTsfMetadata(Map<String, String> mergedTransitiveMetadata,
Map<String, String> mergedDisposableMetadata, Map<String, String> mergedApplicationMetadata, Map<String, String> addHeaders, Map<String, String> mergedDisposableMetadata, Map<String, String> mergedApplicationMetadata, Map<String, String> addHeaders,
AtomicReference<String> callerIp, String encodedUserTagList, String encodedSystemTagList, String encodedMetadata) { AtomicReference<String> callerIp, String encodedUserTagList, String encodedSystemTagList, String encodedMetadata) {
if (!TsfContextUtils.isOnlyTsfConsulEnabled()) { if (!TsfContextUtils.isTsfConsulEnabled()) {
return; return;
} }
List<Tag> tsfUserTagList = TsfTagUtils.deserializeTagList(encodedUserTagList); List<Tag> tsfUserTagList = TsfTagUtils.deserializeTagList(encodedUserTagList);
@ -222,10 +222,10 @@ public final class TsfTagUtils {
} }
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("mergedTransitiveMetadata:{}, mergedDisposableMetadata: {}, mergedApplicationMetadata: {}," LOGGER.debug("mergedTransitiveMetadata:{}, mergedDisposableMetadata: {}, mergedApplicationMetadata: {},"
+ " addHeaders:{}, encodedUserTagList:{}, encodedSystemTagList:{}, encodedMetadata:{}, callerIp:{}", + " addHeaders:{}, encodedUserTagList:{}, encodedSystemTagList:{}, encodedMetadata:{}, callerIp:{}",
mergedTransitiveMetadata, mergedDisposableMetadata, mergedApplicationMetadata, mergedTransitiveMetadata, mergedDisposableMetadata, mergedApplicationMetadata,
addHeaders, encodedUserTagList, encodedSystemTagList, encodedMetadata, callerIp.get()); addHeaders, encodedUserTagList, encodedSystemTagList, encodedMetadata, callerIp.get());
} }
} }

Loading…
Cancel
Save