fix:fix router label feign interceptor order.

pull/1080/head
Haotian Zhang 1 year ago
parent 17bb74f282
commit aae97b61fa

@ -19,3 +19,4 @@
- refactor:refactor Polaris registration.
- feat:added automatic optimization for dynamic config refresh type.
- fix:fix gray release examples bug.
- fix:fix router label feign interceptor order.

@ -23,7 +23,7 @@ import java.util.Collections;
import java.util.List;
import com.netflix.zuul.ZuulFilter;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.metadata.core.DecodeTransferMetadataReactiveFilter;
import com.tencent.cloud.metadata.core.DecodeTransferMetadataServletFilter;
import com.tencent.cloud.metadata.core.EncodeTransferMedataFeignInterceptor;
@ -68,12 +68,10 @@ public class MetadataTransferAutoConfiguration {
@Bean
public FilterRegistrationBean<DecodeTransferMetadataServletFilter> metadataServletFilterRegistrationBean(
DecodeTransferMetadataServletFilter decodeTransferMetadataServletFilter) {
FilterRegistrationBean<DecodeTransferMetadataServletFilter> filterRegistrationBean = new FilterRegistrationBean<>(
decodeTransferMetadataServletFilter);
filterRegistrationBean.setDispatcherTypes(ASYNC, ERROR, FORWARD, INCLUDE,
REQUEST);
filterRegistrationBean
.setOrder(MetadataConstant.OrderConstant.WEB_FILTER_ORDER);
FilterRegistrationBean<DecodeTransferMetadataServletFilter> filterRegistrationBean =
new FilterRegistrationBean<>(decodeTransferMetadataServletFilter);
filterRegistrationBean.setDispatcherTypes(ASYNC, ERROR, FORWARD, INCLUDE, REQUEST);
filterRegistrationBean.setOrder(OrderConstant.Server.Servlet.DECODE_TRANSFER_METADATA_FILTER_ORDER);
return filterRegistrationBean;
}
@ -122,7 +120,6 @@ public class MetadataTransferAutoConfiguration {
public GlobalFilter encodeTransferMedataScgFilter() {
return new EncodeTransferMedataScgFilter();
}
}
/**

@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.Map;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
import org.slf4j.Logger;
@ -54,7 +55,7 @@ public class DecodeTransferMetadataReactiveFilter implements WebFilter, Ordered
@Override
public int getOrder() {
return MetadataConstant.OrderConstant.WEB_FILTER_ORDER;
return OrderConstant.Server.Reactive.DECODE_TRANSFER_METADATA_FILTER_ORDER;
}
@Override

@ -29,7 +29,7 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
import org.slf4j.Logger;
@ -50,7 +50,7 @@ import static com.tencent.cloud.common.constant.MetadataConstant.HeaderName.CUST
*
* @author Haotian Zhang
*/
@Order(MetadataConstant.OrderConstant.WEB_FILTER_ORDER)
@Order(OrderConstant.Server.Servlet.DECODE_TRANSFER_METADATA_FILTER_ORDER)
public class DecodeTransferMetadataServletFilter extends OncePerRequestFilter {
private static final Logger LOG = LoggerFactory.getLogger(DecodeTransferMetadataServletFilter.class);

@ -21,7 +21,7 @@ package com.tencent.cloud.metadata.core;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
@ -51,7 +51,7 @@ public class EncodeTransferMedataFeignInterceptor implements RequestInterceptor,
@Override
public int getOrder() {
return MetadataConstant.OrderConstant.METADATA_2_HEADER_INTERCEPTOR_ORDER;
return OrderConstant.Client.Feign.ENCODE_TRANSFER_METADATA_INTERCEPTOR_ORDER;
}
@Override

@ -23,7 +23,7 @@ import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
@ -50,7 +50,7 @@ public class EncodeTransferMedataRestTemplateInterceptor implements ClientHttpRe
@Override
public int getOrder() {
return MetadataConstant.OrderConstant.METADATA_2_HEADER_INTERCEPTOR_ORDER;
return OrderConstant.Client.RestTemplate.ENCODE_TRANSFER_METADATA_INTERCEPTOR_ORDER;
}
@Override

@ -23,6 +23,7 @@ import java.net.URLEncoder;
import java.util.Map;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
@ -38,7 +39,6 @@ import org.springframework.web.server.ServerWebExchange;
import static com.tencent.cloud.common.constant.ContextConstant.UTF_8;
import static com.tencent.cloud.common.constant.MetadataConstant.HeaderName.CUSTOM_DISPOSABLE_METADATA;
import static com.tencent.cloud.common.constant.MetadataConstant.HeaderName.CUSTOM_METADATA;
import static org.springframework.cloud.gateway.filter.LoadBalancerClientFilter.LOAD_BALANCER_CLIENT_FILTER_ORDER;
/**
* Scg filter used for writing metadata in HTTP request header.
@ -47,11 +47,9 @@ import static org.springframework.cloud.gateway.filter.LoadBalancerClientFilter.
*/
public class EncodeTransferMedataScgFilter implements GlobalFilter, Ordered {
private static final int METADATA_SCG_FILTER_ORDER = LOAD_BALANCER_CLIENT_FILTER_ORDER + 1;
@Override
public int getOrder() {
return METADATA_SCG_FILTER_ORDER;
return OrderConstant.Client.Scg.ENCODE_TRANSFER_METADATA_FILTER_ORDER;
}
@Override

@ -24,6 +24,7 @@ import java.util.Map;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.common.util.JacksonUtils;
@ -33,7 +34,6 @@ import org.springframework.util.CollectionUtils;
import static com.tencent.cloud.common.constant.ContextConstant.UTF_8;
import static com.tencent.cloud.common.constant.MetadataConstant.HeaderName.CUSTOM_DISPOSABLE_METADATA;
import static com.tencent.cloud.common.constant.MetadataConstant.HeaderName.CUSTOM_METADATA;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.RIBBON_ROUTING_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.ROUTE_TYPE;
/**
@ -50,7 +50,7 @@ public class EncodeTransferMetadataZuulFilter extends ZuulFilter {
@Override
public int filterOrder() {
return RIBBON_ROUTING_FILTER_ORDER - 1;
return OrderConstant.Client.Zuul.ENCODE_TRANSFER_METADATA_FILTER_ORDER;
}
@Override

@ -18,6 +18,7 @@
package com.tencent.cloud.metadata.core;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.config.MetadataLocalProperties;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -59,7 +60,7 @@ public class DecodeTransferMetadataReactiveFilterTest {
@Test
public void test1() {
assertThat(this.metadataReactiveFilter.getOrder())
.isEqualTo(MetadataConstant.OrderConstant.WEB_FILTER_ORDER);
.isEqualTo(OrderConstant.Server.Reactive.DECODE_TRANSFER_METADATA_FILTER_ORDER);
}
@Test

@ -17,7 +17,7 @@
package com.tencent.cloud.polaris.circuitbreaker.common;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
import com.tencent.polaris.api.config.consumer.ServiceRouterConfig;
@ -57,6 +57,6 @@ public class CircuitBreakerConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.CIRCUIT_BREAKER_ORDER;
return OrderConstant.Modifier.CIRCUIT_BREAKER_ORDER;
}
}

@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.util.ZuulFilterUtils;
import com.tencent.cloud.polaris.circuitbreaker.PolarisCircuitBreaker;
import com.tencent.polaris.circuitbreak.api.pojo.InvokeContext;
@ -45,7 +46,6 @@ import org.springframework.web.client.HttpStatusCodeException;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_CIRCUIT_BREAKER;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_PRE_ROUTE_TIME;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.POST_TYPE;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SEND_RESPONSE_FILTER_ORDER;
/**
* Polaris circuit breaker post-processing. Including reporting.
@ -73,7 +73,7 @@ public class PolarisCircuitBreakerPostZuulFilter extends ZuulFilter {
@Override
public int filterOrder() {
return SEND_RESPONSE_FILTER_ORDER - 1;
return OrderConstant.Client.Zuul.CIRCUIT_BREAKER_POST_FILTER_ORDER;
}
@Override

@ -24,6 +24,7 @@ import java.util.List;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.util.ZuulFilterUtils;
import com.tencent.cloud.polaris.circuitbreaker.PolarisCircuitBreaker;
@ -46,7 +47,6 @@ import org.springframework.util.StringUtils;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_CIRCUIT_BREAKER;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_IS_IN_ROUTING_STATE;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_PRE_ROUTE_TIME;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;
/**
@ -85,7 +85,7 @@ public class PolarisCircuitBreakerZuulFilter extends ZuulFilter {
*/
@Override
public int filterOrder() {
return PRE_DECORATION_FILTER_ORDER + 2;
return OrderConstant.Client.Zuul.CIRCUIT_BREAKER_FILTER_ORDER;
}
@Override

@ -21,7 +21,7 @@ package com.tencent.cloud.polaris.config;
import java.util.ArrayList;
import java.util.List;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.util.AddressUtils;
import com.tencent.cloud.polaris.config.config.PolarisConfigProperties;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
@ -105,7 +105,7 @@ public class ConfigurationModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.CONFIG_ORDER;
return OrderConstant.Modifier.CONFIG_ORDER;
}
/**

@ -18,7 +18,7 @@
package com.tencent.cloud.polaris;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.polaris.api.config.consumer.ServiceRouterConfig;
import com.tencent.polaris.factory.config.ConfigurationImpl;
@ -55,6 +55,6 @@ public class DiscoveryConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.DISCOVERY_ORDER;
return OrderConstant.Modifier.DISCOVERY_ORDER;
}
}

@ -18,7 +18,7 @@
package com.tencent.cloud.polaris;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.polaris.factory.config.ConfigurationImpl;
import com.tencent.polaris.factory.config.consumer.DiscoveryConfigImpl;
@ -54,6 +54,6 @@ public class PolarisDiscoveryConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.LAST;
return OrderConstant.Modifier.DISCOVERY_CONFIG_ORDER;
}
}

@ -22,7 +22,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.polaris.api.config.plugin.DefaultPlugins;
import com.tencent.polaris.factory.config.ConfigurationImpl;
@ -112,6 +112,6 @@ public class ConsulConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.LAST;
return OrderConstant.Modifier.CONSUL_DISCOVERY_CONFIG_ORDER;
}
}

@ -22,7 +22,7 @@ import java.util.Collections;
import java.util.Map;
import java.util.Objects;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.polaris.api.config.plugin.DefaultPlugins;
import com.tencent.polaris.factory.config.ConfigurationImpl;
@ -128,6 +128,6 @@ public class NacosConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.LAST;
return OrderConstant.Modifier.NACOS_DISCOVERY_CONFIG_ORDER;
}
}

@ -18,6 +18,7 @@
package com.tencent.cloud.polaris.ratelimit.config;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisSDKContextManager;
import com.tencent.cloud.polaris.context.ServiceRuleManager;
import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration;
@ -38,7 +39,6 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.Nullable;
import static com.tencent.cloud.polaris.ratelimit.constant.RateLimitConstant.FILTER_ORDER;
import static com.tencent.cloud.polaris.ratelimit.filter.QuotaCheckServletFilter.QUOTA_FILTER_BEAN_NAME;
import static javax.servlet.DispatcherType.ASYNC;
import static javax.servlet.DispatcherType.ERROR;
@ -86,7 +86,7 @@ public class PolarisRateLimitAutoConfiguration {
quotaCheckServletFilter);
registrationBean.setDispatcherTypes(ASYNC, ERROR, FORWARD, INCLUDE, REQUEST);
registrationBean.setName(QUOTA_FILTER_BEAN_NAME);
registrationBean.setOrder(FILTER_ORDER);
registrationBean.setOrder(OrderConstant.Server.Servlet.RATE_LIMIT_FILTER_ORDER);
return registrationBean;
}

@ -17,7 +17,7 @@
package com.tencent.cloud.polaris.ratelimit.config;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.polaris.factory.config.ConfigurationImpl;
@ -42,6 +42,6 @@ public class RateLimitConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.CIRCUIT_BREAKER_ORDER;
return OrderConstant.Modifier.RATE_LIMIT_ORDER;
}
}

@ -18,34 +18,24 @@
package com.tencent.cloud.polaris.ratelimit.constant;
import org.springframework.core.Ordered;
/**
* Constant for rate-limiter.
*
* @author Haotian Zhang
*/
public final class RateLimitConstant {
/**
* Default Private Constructor .
*/
private RateLimitConstant() {
}
/**
* Order of filter.
*/
public static final int FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
/**
* Info of rate limit.
*/
public static String QUOTA_LIMITED_INFO = "The request is denied by rate limit because the throttling threshold is reached";
/**
* The build in label method.
*/
public static String LABEL_METHOD = "method";
/**
* Default Private Constructor.
*/
private RateLimitConstant() {
}
}

@ -26,9 +26,9 @@ import java.util.Set;
import javax.annotation.PostConstruct;
import com.tencent.cloud.common.constant.HeaderConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitProperties;
import com.tencent.cloud.polaris.ratelimit.constant.RateLimitConstant;
import com.tencent.cloud.polaris.ratelimit.resolver.RateLimitRuleArgumentReactiveResolver;
import com.tencent.cloud.polaris.ratelimit.spi.PolarisRateLimiterLimitedFallback;
import com.tencent.cloud.polaris.ratelimit.utils.QuotaCheckUtils;
@ -72,9 +72,9 @@ public class QuotaCheckReactiveFilter implements WebFilter, Ordered {
private String rejectTips;
public QuotaCheckReactiveFilter(LimitAPI limitAPI,
PolarisRateLimitProperties polarisRateLimitProperties,
RateLimitRuleArgumentReactiveResolver rateLimitRuleArgumentResolver,
@Nullable PolarisRateLimiterLimitedFallback polarisRateLimiterLimitedFallback) {
PolarisRateLimitProperties polarisRateLimitProperties,
RateLimitRuleArgumentReactiveResolver rateLimitRuleArgumentResolver,
@Nullable PolarisRateLimiterLimitedFallback polarisRateLimiterLimitedFallback) {
this.limitAPI = limitAPI;
this.polarisRateLimitProperties = polarisRateLimitProperties;
this.rateLimitRuleArgumentResolver = rateLimitRuleArgumentResolver;
@ -88,7 +88,7 @@ public class QuotaCheckReactiveFilter implements WebFilter, Ordered {
@Override
public int getOrder() {
return RateLimitConstant.FILTER_ORDER;
return OrderConstant.Server.Reactive.RATE_LIMIT_FILTER_ORDER;
}
@Override
@ -110,7 +110,8 @@ public class QuotaCheckReactiveFilter implements WebFilter, Ordered {
response.setRawStatusCode(polarisRateLimiterLimitedFallback.rejectHttpCode());
response.getHeaders().setContentType(polarisRateLimiterLimitedFallback.mediaType());
dataBuffer = response.bufferFactory().allocateBuffer()
.write(polarisRateLimiterLimitedFallback.rejectTips().getBytes(polarisRateLimiterLimitedFallback.charset()));
.write(polarisRateLimiterLimitedFallback.rejectTips()
.getBytes(polarisRateLimiterLimitedFallback.charset()));
}
else {
response.setRawStatusCode(polarisRateLimitProperties.getRejectHttpCode());
@ -118,9 +119,12 @@ public class QuotaCheckReactiveFilter implements WebFilter, Ordered {
dataBuffer = response.bufferFactory().allocateBuffer()
.write(rejectTips.getBytes(StandardCharsets.UTF_8));
}
response.getHeaders().add(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetFlowControl.getDesc());
response.getHeaders()
.add(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetFlowControl.getDesc());
if (Objects.nonNull(quotaResponse.getActiveRule())) {
response.getHeaders().add(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME, quotaResponse.getActiveRule().getName().getValue());
response.getHeaders()
.add(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME, quotaResponse.getActiveRule().getName()
.getValue());
}
return response.writeWith(Mono.just(dataBuffer));
}

@ -29,9 +29,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.tencent.cloud.common.constant.HeaderConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitProperties;
import com.tencent.cloud.polaris.ratelimit.constant.RateLimitConstant;
import com.tencent.cloud.polaris.ratelimit.resolver.RateLimitRuleArgumentServletResolver;
import com.tencent.cloud.polaris.ratelimit.spi.PolarisRateLimiterLimitedFallback;
import com.tencent.cloud.polaris.ratelimit.utils.QuotaCheckUtils;
@ -55,7 +55,7 @@ import org.springframework.web.filter.OncePerRequestFilter;
*
* @author Haotian Zhang, lepdou, cheese8
*/
@Order(RateLimitConstant.FILTER_ORDER)
@Order(OrderConstant.Server.Servlet.RATE_LIMIT_FILTER_ORDER)
public class QuotaCheckServletFilter extends OncePerRequestFilter {
/**
@ -115,7 +115,8 @@ public class QuotaCheckServletFilter extends OncePerRequestFilter {
}
response.addHeader(HeaderConstant.INTERNAL_CALLEE_RET_STATUS, RetStatus.RetFlowControl.getDesc());
if (Objects.nonNull(quotaResponse.getActiveRule())) {
response.addHeader(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME, quotaResponse.getActiveRule().getName().getValue());
response.addHeader(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME, quotaResponse.getActiveRule().getName()
.getValue());
}
return;
}

@ -28,10 +28,10 @@ import java.util.stream.Collectors;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.util.JsonFormat;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.polaris.context.ServiceRuleManager;
import com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitProperties;
import com.tencent.cloud.polaris.ratelimit.constant.RateLimitConstant;
import com.tencent.cloud.polaris.ratelimit.resolver.RateLimitRuleArgumentReactiveResolver;
import com.tencent.cloud.polaris.ratelimit.spi.PolarisRateLimiterLabelReactiveResolver;
import com.tencent.cloud.polaris.ratelimit.spi.PolarisRateLimiterLimitedFallback;
@ -113,9 +113,11 @@ public class QuotaCheckReactiveFilterTest {
ServiceRuleManager serviceRuleManager = mock(ServiceRuleManager.class);
RateLimitProto.Rule.Builder ratelimitRuleBuilder = RateLimitProto.Rule.newBuilder();
InputStream inputStream = QuotaCheckServletFilterTest.class.getClassLoader().getResourceAsStream("ratelimit.json");
String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining(""));
RateLimitProto.Rule.Builder ratelimitRuleBuilder = RateLimitProto.Rule.newBuilder();
InputStream inputStream = QuotaCheckServletFilterTest.class.getClassLoader()
.getResourceAsStream("ratelimit.json");
String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines()
.collect(Collectors.joining(""));
JsonFormat.parser().ignoringUnknownFields().merge(json, ratelimitRuleBuilder);
RateLimitProto.Rule rateLimitRule = ratelimitRuleBuilder.build();
RateLimitProto.RateLimit rateLimit = RateLimitProto.RateLimit.newBuilder().addRules(rateLimitRule).build();
@ -129,7 +131,7 @@ public class QuotaCheckReactiveFilterTest {
@Test
public void testGetOrder() {
assertThat(this.quotaCheckReactiveFilter.getOrder()).isEqualTo(RateLimitConstant.FILTER_ORDER);
assertThat(this.quotaCheckReactiveFilter.getOrder()).isEqualTo(OrderConstant.Server.Reactive.RATE_LIMIT_FILTER_ORDER);
}
@Test

@ -27,6 +27,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.constant.RouterConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
@ -77,7 +78,7 @@ public class RouterLabelFeignInterceptor implements RequestInterceptor, Ordered
@Override
public int getOrder() {
return 0;
return OrderConstant.Client.Feign.ROUTER_LABEL_INTERCEPTOR_ORDER;
}
@Override

@ -27,6 +27,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.constant.RouterConstant;
import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
@ -72,7 +73,7 @@ public class RouterLabelFeignInterceptorTest {
Collections.singletonList(routerLabelResolver),
staticMetadataManager, routerRuleLabelResolver, polarisContextProperties);
assertThat(routerLabelFeignInterceptor.getOrder()).isEqualTo(0);
assertThat(routerLabelFeignInterceptor.getOrder()).isEqualTo(OrderConstant.Client.Feign.ROUTER_LABEL_INTERCEPTOR_ORDER);
// mock request template
RequestTemplate requestTemplate = new RequestTemplate();

@ -44,42 +44,6 @@ public final class ContextConstant {
private ContextConstant() {
}
/**
* Order of configuration modifier.
*/
public static final class ModifierOrder {
/**
* First modifier order.
*/
public static Integer FIRST = Integer.MIN_VALUE;
/**
* Last modifier order.
*/
public static Integer LAST = Integer.MAX_VALUE;
/**
* Order of circuit breaker configuration modifier.
*/
public static Integer CIRCUIT_BREAKER_ORDER = 1;
/**
* Order of discovery configuration modifier.
*/
public static Integer DISCOVERY_ORDER = 0;
/**
* Order of configuration modifier.
*/
public static Integer CONFIG_ORDER = 1;
/**
* Order of stat reporter configuration modifier.
*/
public static Integer STAT_REPORTER_ORDER = 1;
}
public static final class Zuul {
/**

@ -17,8 +17,6 @@
package com.tencent.cloud.common.constant;
import org.springframework.core.Ordered;
/**
* Constant for metadata.
*
@ -48,27 +46,6 @@ public final class MetadataConstant {
}
/**
* Order of filter, interceptor, ...
*/
public static class OrderConstant {
/**
* Order of filter.
*/
public static final int WEB_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 9;
/**
* Order of MetadataFirstFeignInterceptor.
*/
public static int METADATA_FIRST_FEIGN_INTERCEPTOR_ORDER = Ordered.HIGHEST_PRECEDENCE + 1;
/**
* Order of Metadata2HeaderInterceptor.
*/
public static int METADATA_2_HEADER_INTERCEPTOR_ORDER = Ordered.LOWEST_PRECEDENCE;
}
/**
* Metadata HTTP header name.
*/

@ -0,0 +1,217 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package com.tencent.cloud.common.constant;
import org.springframework.cloud.gateway.filter.ReactiveLoadBalancerClientFilter;
import org.springframework.core.Ordered;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.RIBBON_ROUTING_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SEND_RESPONSE_FILTER_ORDER;
/**
* Constant for order.
*
* @author Haotian Zhang
*/
public class OrderConstant {
public static class Client {
/**
* Order constant for Feign.
*/
public static class Feign {
/**
* Order of encode transfer metadata interceptor.
*/
public static final int ENCODE_TRANSFER_METADATA_INTERCEPTOR_ORDER = Ordered.LOWEST_PRECEDENCE - 1;
/**
* Order of encode router label interceptor.
*/
public static final int ROUTER_LABEL_INTERCEPTOR_ORDER = Ordered.LOWEST_PRECEDENCE;
}
/**
* Order constant for RestTemplate.
*/
public static class RestTemplate {
/**
* Order of encode transfer metadata interceptor.
*/
public static final int ENCODE_TRANSFER_METADATA_INTERCEPTOR_ORDER = Ordered.LOWEST_PRECEDENCE - 1;
/**
* Order of encode router label interceptor.
*/
public static final int ROUTER_LABEL_INTERCEPTOR_ORDER = Ordered.LOWEST_PRECEDENCE;
}
/**
* Order constant for Spring Cloud Gateway.
*/
public static class Scg {
/**
* Order of encode transfer metadata filter.
* {@link ReactiveLoadBalancerClientFilter}.LOAD_BALANCER_CLIENT_FILTER_ORDER = 10150.
*/
public static final int ENCODE_TRANSFER_METADATA_FILTER_ORDER = 10150 + 1;
/**
* Order of enhanced filter.
* {@link ReactiveLoadBalancerClientFilter}.LOAD_BALANCER_CLIENT_FILTER_ORDER = 10150.
*/
public static final int ENHANCED_FILTER_ORDER = 10150 + 1;
}
/**
* Order constant for Zuul.
*/
public static class Zuul {
/**
* Order of encode transfer metadata filter.
*/
public static final int ENCODE_TRANSFER_METADATA_FILTER_ORDER = RIBBON_ROUTING_FILTER_ORDER - 1;
/**
* Order of enhanced ROUTE filter.
*/
public static final int ENHANCED_ROUTE_FILTER_ORDER = RIBBON_ROUTING_FILTER_ORDER + 1;
/**
* Order of enhanced POST filter.
*/
public static final int ENHANCED_POST_FILTER_ORDER = SEND_RESPONSE_FILTER_ORDER + 1;
/**
* Order of enhanced ERROR filter.
*/
public static final int ENHANCED_ERROR_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE;
/**
* Order of circuit breaker post filter.
*/
public static final int CIRCUIT_BREAKER_POST_FILTER_ORDER = SEND_RESPONSE_FILTER_ORDER - 1;
/**
* Order of circuit breaker filter.
*/
public static final int CIRCUIT_BREAKER_FILTER_ORDER = PRE_DECORATION_FILTER_ORDER + 2;
}
}
public static class Server {
/**
* Order constant for Servlet.
*/
public static class Servlet {
/**
* Order of decode transfer metadata filter.
*/
public static final int DECODE_TRANSFER_METADATA_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 9;
/**
* Order of enhanced filter.
*/
public static final int ENHANCED_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
/**
* Order of rate-limit filter.
*/
public static final int RATE_LIMIT_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
}
/**
* Order constant for Reactive.
*/
public static class Reactive {
/**
* Order of decode transfer metadata filter.
*/
public static final int DECODE_TRANSFER_METADATA_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 9;
/**
* Order of enhanced filter.
*/
public static final int ENHANCED_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
/**
* Order of rate-limit filter.
*/
public static final int RATE_LIMIT_FILTER_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
}
}
/**
* Order of configuration modifier.
*/
public static final class Modifier {
/**
* Address modifier order.
*/
public static Integer ADDRESS_ORDER = Integer.MIN_VALUE;
/**
* Discovery config modifier order.
*/
public static Integer DISCOVERY_CONFIG_ORDER = Integer.MAX_VALUE;
/**
* Nacos discovery config modifier order.
*/
public static Integer NACOS_DISCOVERY_CONFIG_ORDER = Integer.MAX_VALUE;
/**
* Consul discovery config modifier order.
*/
public static Integer CONSUL_DISCOVERY_CONFIG_ORDER = Integer.MAX_VALUE;
/**
* Order of discovery configuration modifier.
*/
public static Integer DISCOVERY_ORDER = 0;
/**
* Order of circuit breaker configuration modifier.
*/
public static Integer CIRCUIT_BREAKER_ORDER = 2;
/**
* Order of rate-limit configuration modifier.
*/
public static Integer RATE_LIMIT_ORDER = 2;
/**
* Order of config configuration modifier.
*/
public static Integer CONFIG_ORDER = 1;
/**
* Order of router configuration modifier.
*/
public static Integer ROUTER_ORDER = 1;
/**
* Order of stat reporter configuration modifier.
*/
public static Integer STAT_REPORTER_ORDER = 1;
}
}

@ -1,39 +0,0 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package com.tencent.cloud.tsf.adapter.config;
import com.tencent.polaris.circuitbreak.api.flow.CircuitBreakerFlow;
import com.tencent.polaris.client.api.SDKContext;
/**
* TsfRouterFlow.
*
* @author sean yu
*/
public class TsfCircuitBreakerFlow implements CircuitBreakerFlow {
@Override
public String getName() {
return PolarisTsfFlowConfigModifier.TSF_FLOW_NAME;
}
@Override
public void setSDKContext(SDKContext sdkContext) {
}
}

@ -1,39 +0,0 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package com.tencent.cloud.tsf.adapter.config;
import com.tencent.polaris.client.api.SDKContext;
import com.tencent.polaris.ratelimit.api.flow.LimitFlow;
/**
* TsfRouterFlow.
*
* @author sean yu
*/
public class TsfLimitFlow implements LimitFlow {
@Override
public String getName() {
return PolarisTsfFlowConfigModifier.TSF_FLOW_NAME;
}
@Override
public void setSDKContext(SDKContext sdkContext) {
}
}

@ -20,7 +20,7 @@ package com.tencent.cloud.polaris.context;
import java.util.List;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.util.AddressUtils;
import com.tencent.cloud.polaris.context.config.PolarisContextProperties;
import com.tencent.polaris.factory.config.ConfigurationImpl;
@ -52,6 +52,6 @@ public class ModifyAddress implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.FIRST;
return OrderConstant.Modifier.ADDRESS_ORDER;
}
}

@ -17,7 +17,7 @@
package com.tencent.cloud.rpc.enhancement.filter;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
@ -87,7 +87,7 @@ public class EnhancedReactiveFilter implements WebFilter, Ordered {
@Override
public int getOrder() {
return MetadataConstant.OrderConstant.WEB_FILTER_ORDER + 1;
return OrderConstant.Server.Reactive.ENHANCED_FILTER_ORDER;
}
}

@ -29,7 +29,7 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.tencent.cloud.common.constant.MetadataConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
@ -46,7 +46,7 @@ import org.springframework.web.filter.OncePerRequestFilter;
*
* @author sean yu
*/
@Order(MetadataConstant.OrderConstant.WEB_FILTER_ORDER + 1)
@Order(OrderConstant.Server.Servlet.ENHANCED_FILTER_ORDER)
public class EnhancedServletFilter extends OncePerRequestFilter {
private final EnhancedPluginRunner pluginRunner;

@ -19,6 +19,7 @@ package com.tencent.cloud.rpc.enhancement.scg;
import java.net.URI;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
@ -29,7 +30,6 @@ import reactor.core.publisher.Mono;
import org.springframework.cloud.client.DefaultServiceInstance;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.filter.ReactiveLoadBalancerClientFilter;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.core.Ordered;
import org.springframework.web.server.ServerWebExchange;
@ -107,11 +107,8 @@ public class EnhancedGatewayGlobalFilter implements GlobalFilter, Ordered {
});
}
/**
* {@link ReactiveLoadBalancerClientFilter}.LOAD_BALANCER_CLIENT_FILTER_ORDER = 10150.
*/
@Override
public int getOrder() {
return 10150 + 1;
return OrderConstant.Client.Scg.ENHANCED_FILTER_ORDER;
}
}

@ -17,7 +17,7 @@
package com.tencent.cloud.rpc.enhancement.stat.config;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.polaris.factory.config.ConfigurationImpl;
import com.tencent.polaris.plugins.stat.prometheus.handler.PrometheusHandlerConfig;
@ -80,6 +80,6 @@ public class StatConfigModifier implements PolarisConfigModifier {
@Override
public int getOrder() {
return ContextConstant.ModifierOrder.STAT_REPORTER_ORDER;
return OrderConstant.Modifier.STAT_REPORTER_ORDER;
}
}

@ -24,12 +24,11 @@ import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedResponseContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
@ -46,8 +45,6 @@ import static org.springframework.cloud.netflix.zuul.filters.support.FilterConst
*/
public class EnhancedErrorZuulFilter extends ZuulFilter {
private static final Logger LOGGER = LoggerFactory.getLogger(EnhancedErrorZuulFilter.class);
private final EnhancedPluginRunner pluginRunner;
private final Environment environment;
@ -64,7 +61,7 @@ public class EnhancedErrorZuulFilter extends ZuulFilter {
@Override
public int filterOrder() {
return Integer.MIN_VALUE;
return OrderConstant.Client.Zuul.ENHANCED_ERROR_FILTER_ORDER;
}
@Override

@ -24,12 +24,11 @@ import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginType;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedResponseContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
@ -37,7 +36,6 @@ import org.springframework.util.StringUtils;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_PRE_ROUTE_TIME;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.POST_TYPE;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SEND_RESPONSE_FILTER_ORDER;
/**
* Polaris circuit breaker implement in Zuul.
@ -46,8 +44,6 @@ import static org.springframework.cloud.netflix.zuul.filters.support.FilterConst
*/
public class EnhancedPostZuulFilter extends ZuulFilter {
private static final Logger LOGGER = LoggerFactory.getLogger(EnhancedPostZuulFilter.class);
private final EnhancedPluginRunner pluginRunner;
private final Environment environment;
@ -64,7 +60,7 @@ public class EnhancedPostZuulFilter extends ZuulFilter {
@Override
public int filterOrder() {
return SEND_RESPONSE_FILTER_ORDER + 1;
return OrderConstant.Client.Zuul.ENHANCED_POST_FILTER_ORDER;
}
@Override

@ -26,6 +26,7 @@ import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import com.tencent.cloud.common.constant.ContextConstant;
import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.common.util.ZuulFilterUtils;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginContext;
import com.tencent.cloud.rpc.enhancement.plugin.EnhancedPluginRunner;
@ -42,7 +43,6 @@ import org.springframework.http.HttpMethod;
import org.springframework.util.StringUtils;
import static com.tencent.cloud.common.constant.ContextConstant.Zuul.POLARIS_PRE_ROUTE_TIME;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.RIBBON_ROUTING_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.ROUTE_TYPE;
/**
@ -70,7 +70,7 @@ public class EnhancedRouteZuulFilter extends ZuulFilter {
@Override
public int filterOrder() {
return RIBBON_ROUTING_FILTER_ORDER + 1;
return OrderConstant.Client.Zuul.ENHANCED_ROUTE_FILTER_ORDER;
}
@Override

Loading…
Cancel
Save