Merge branch 'hoxton' into hoxton-auth

pull/1541/head
Haotian Zhang 5 months ago committed by GitHub
commit 4d2cb24208
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -23,4 +23,5 @@
- [fix:fix zuul delay circuit breaker.](https://github.com/Tencent/spring-cloud-tencent/pull/1519) - [fix:fix zuul delay circuit breaker.](https://github.com/Tencent/spring-cloud-tencent/pull/1519)
- [fix:fix watch tsf config, fix bean refresh with RefreshScope and ConfigurationProperties.](https://github.com/Tencent/spring-cloud-tencent/pull/1520) - [fix:fix watch tsf config, fix bean refresh with RefreshScope and ConfigurationProperties.](https://github.com/Tencent/spring-cloud-tencent/pull/1520)
- [docs:update circuit breaker examples.](https://github.com/Tencent/spring-cloud-tencent/pull/1521) - [docs:update circuit breaker examples.](https://github.com/Tencent/spring-cloud-tencent/pull/1521)
- [feat:support zuul circuit breaker fallback response.](https://github.com/Tencent/spring-cloud-tencent/pull/1522)
- [feat:support auth.](https://github.com/Tencent/spring-cloud-tencent/pull/1541) - [feat:support auth.](https://github.com/Tencent/spring-cloud-tencent/pull/1541)

@ -91,7 +91,7 @@
<properties> <properties>
<!-- Project revision --> <!-- Project revision -->
<revision>2.0.0.1-Hoxton.SR12</revision> <revision>2.0.2.0-Hoxton.SR12-SNAPSHOT</revision>
<!-- Spring Framework --> <!-- Spring Framework -->
<spring.framework.version>5.2.25.RELEASE</spring.framework.version> <spring.framework.version>5.2.25.RELEASE</spring.framework.version>

@ -23,6 +23,7 @@ import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -38,6 +39,7 @@ import com.tencent.cloud.polaris.router.PolarisRouterContext;
import com.tencent.cloud.polaris.router.RouterRuleLabelResolver; import com.tencent.cloud.polaris.router.RouterRuleLabelResolver;
import com.tencent.cloud.polaris.router.spi.ServletRouterLabelResolver; import com.tencent.cloud.polaris.router.spi.ServletRouterLabelResolver;
import com.tencent.cloud.rpc.enhancement.zuul.EnhancedZuulPluginRunner; import com.tencent.cloud.rpc.enhancement.zuul.EnhancedZuulPluginRunner;
import com.tencent.polaris.circuitbreak.client.exception.CallAbortedException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -50,6 +52,7 @@ import org.springframework.cloud.netflix.zuul.filters.ProxyRequestHelper;
import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandFactory; import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandFactory;
import org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter; import org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
@ -196,7 +199,34 @@ public class PolarisRibbonRoutingFilter extends RibbonRoutingFilter implements B
@Override @Override
public Object run() { public Object run() {
RequestContext context = RequestContext.getCurrentContext();
// Run pre enhanced plugins.
try {
enhancedZuulPluginRunner.run(); enhancedZuulPluginRunner.run();
}
catch (CallAbortedException e) {
if (e.getFallbackInfo() == null) {
throw e;
}
// circuit breaker fallback, not need to run post/exception enhanced plugins.
// set sendZuulResponse to false
context.setSendZuulResponse(false);
// set response status code
HttpStatus httpStatus = HttpStatus.resolve(e.getFallbackInfo().getCode());
context.setResponseStatusCode(httpStatus != null ? httpStatus.value() : HttpStatus.INTERNAL_SERVER_ERROR.value());
// set response body
String body = Optional.of(e.getFallbackInfo().getBody()).orElse("");
context.setResponseBody(body);
// set response content type
context.getResponse().setContentType("text/plain;charset=UTF-8");
// set response headers
if (com.tencent.polaris.api.utils.CollectionUtils.isNotEmpty(e.getFallbackInfo().getHeaders())) {
e.getFallbackInfo().getHeaders().forEach(context.getResponse()::addHeader);
}
}
if (context.sendZuulResponse()) {
return super.run(); return super.run();
} }
return null;
}
} }

@ -70,7 +70,7 @@
</developers> </developers>
<properties> <properties>
<revision>2.0.0.1-Hoxton.SR12</revision> <revision>2.0.2.0-Hoxton.SR12-SNAPSHOT</revision>
<!-- Dependencies --> <!-- Dependencies -->
<polaris.version>2.0.0.0</polaris.version> <polaris.version>2.0.0.0</polaris.version>

Loading…
Cancel
Save