From da303ff8d5f6c037bcc9b8bef93b4837e0398764 Mon Sep 17 00:00:00 2001 From: fishtailfu Date: Wed, 28 May 2025 15:32:40 +0800 Subject: [PATCH] fix: back to use getRawStatusCode --- .../common/PolarisResultToErrorCode.java | 6 +++--- .../PolarisCircuitBreakerHttpResponse.java | 6 +++++- .../PolarisCircuitBreakerHttpResponseTest.java | 12 +++++++----- .../filter/QuotaCheckReactiveFilterTest.java | 4 ++-- .../EnhancedRestTemplateWrapInterceptor.java | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/common/PolarisResultToErrorCode.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/common/PolarisResultToErrorCode.java index 9e208b139..946f9a6ae 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/common/PolarisResultToErrorCode.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/common/PolarisResultToErrorCode.java @@ -40,7 +40,7 @@ public class PolarisResultToErrorCode implements ResultToErrorCode { public int onError(Throwable e) { if (checkClassExist("org.springframework.web.client.RestClientResponseException") && e instanceof RestClientResponseException) { - return ((RestClientResponseException) e).getStatusCode().value(); + return ((RestClientResponseException) e).getRawStatusCode(); } else if (checkClassExist("feign.FeignException") && e instanceof FeignException) { @@ -48,10 +48,10 @@ public class PolarisResultToErrorCode implements ResultToErrorCode { } else if (checkClassExist("org.springframework.web.reactive.function.client.WebClientResponseException") && e instanceof WebClientResponseException) { - return ((WebClientResponseException) e).getStatusCode().value(); + return ((WebClientResponseException) e).getRawStatusCode(); } else if (e instanceof CircuitBreakerStatusCodeException) { - return ((CircuitBreakerStatusCodeException) e).getStatusCode().value(); + return ((CircuitBreakerStatusCodeException) e).getRawStatusCode(); } return -1; } diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponse.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponse.java index ad22e6882..dd96a0e4d 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponse.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponse.java @@ -69,9 +69,13 @@ public class PolarisCircuitBreakerHttpResponse implements ClientHttpResponse { return HttpStatus.valueOf(fallbackInfo.getCode()); } + @Override + public final int getRawStatusCode() { + return fallbackInfo.getCode(); + } @Override public final String getStatusText() { - HttpStatus status = HttpStatus.resolve(getStatusCode().value()); + HttpStatus status = HttpStatus.resolve(getRawStatusCode()); return (status != null ? status.getReasonPhrase() : ""); } diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponseTest.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponseTest.java index c2aba130d..bbcb79a86 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponseTest.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/instrument/resttemplate/PolarisCircuitBreakerHttpResponseTest.java @@ -39,7 +39,7 @@ public class PolarisCircuitBreakerHttpResponseTest { void testConstructorWithCodeOnly() throws IOException { PolarisCircuitBreakerHttpResponse response = new PolarisCircuitBreakerHttpResponse(200); - Assertions.assertEquals(200, response.getStatusCode().value()); + Assertions.assertEquals(200, response.getRawStatusCode()); Assertions.assertNotNull(response.getHeaders()); Assertions.assertTrue(response.getHeaders().isEmpty()); Assertions.assertNull(response.getBody()); @@ -50,7 +50,7 @@ public class PolarisCircuitBreakerHttpResponseTest { String body = "test body"; PolarisCircuitBreakerHttpResponse response = new PolarisCircuitBreakerHttpResponse(200, body); - Assertions.assertEquals(200, response.getStatusCode().value()); + Assertions.assertEquals(200, response.getRawStatusCode()); Assertions.assertNotNull(response.getHeaders()); Assertions.assertTrue(response.getHeaders().isEmpty()); Assertions.assertNotNull(response.getBody()); @@ -65,7 +65,7 @@ public class PolarisCircuitBreakerHttpResponseTest { PolarisCircuitBreakerHttpResponse response = new PolarisCircuitBreakerHttpResponse(200, headers, body); - Assertions.assertEquals(200, response.getStatusCode().value()); + Assertions.assertEquals(200, response.getRawStatusCode()); Assertions.assertNotNull(response.getHeaders()); Assertions.assertEquals(2, response.getHeaders().size()); Assertions.assertTrue(response.getHeaders().containsKey("Content-Type")); @@ -81,7 +81,7 @@ public class PolarisCircuitBreakerHttpResponseTest { PolarisCircuitBreakerHttpResponse response = new PolarisCircuitBreakerHttpResponse(fallbackInfo); - Assertions.assertEquals(200, response.getStatusCode().value()); + Assertions.assertEquals(200, response.getRawStatusCode()); Assertions.assertEquals(fallbackInfo, response.getFallbackInfo()); Assertions.assertNotNull(response.getHeaders()); Assertions.assertTrue(response.getHeaders().containsKey("Content-Type")); @@ -97,8 +97,10 @@ public class PolarisCircuitBreakerHttpResponseTest { @Test void testGetStatusTextWithInvalidHttpStatus() { PolarisCircuitBreakerHttpResponse response = new PolarisCircuitBreakerHttpResponse(999); + String statusText = response.getStatusText(); + Assertions.assertEquals("", statusText); //SCT 2024 will throw IllegalArgumentException when getStatusText() is called with invalid http status code - Assertions.assertThrows(IllegalArgumentException.class, () -> response.getStatusText()); +// Assertions.assertThrows(IllegalArgumentException.class, () -> response.getStatusText()); } @Test diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/filter/QuotaCheckReactiveFilterTest.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/filter/QuotaCheckReactiveFilterTest.java index dfdc9ea5e..e5495ef68 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/filter/QuotaCheckReactiveFilterTest.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/filter/QuotaCheckReactiveFilterTest.java @@ -183,7 +183,7 @@ public class QuotaCheckReactiveFilterTest { quotaCheckReactiveFilter.filter(testApp3Exchange, webFilterChain); ServerHttpResponse response = testApp3Exchange.getResponse(); assertThat(response.getStatusCode()).isNotNull(); - assertThat(response.getStatusCode().value()).isEqualTo(419); + assertThat(response.getRawStatusCode()).isEqualTo(419); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.INSUFFICIENT_SPACE_ON_RESOURCE); assertThat(response.getHeaders() .get(HeaderConstant.INTERNAL_ACTIVE_RULE_NAME)).isEqualTo(Collections.singletonList("MOCK_RULE")); @@ -229,7 +229,7 @@ public class QuotaCheckReactiveFilterTest { quotaCheckWithRateLimiterLimitedFallbackReactiveFilter.filter(exchange, webFilterChain); ServerHttpResponse response = exchange.getResponse(); assertThat(response.getStatusCode()).isNotNull(); - assertThat(response.getStatusCode().value()).isEqualTo(polarisRateLimiterLimitedFallback.rejectHttpCode()); + assertThat(response.getRawStatusCode()).isEqualTo(polarisRateLimiterLimitedFallback.rejectHttpCode()); assertThat(response.getHeaders().getContentType()).isEqualTo(polarisRateLimiterLimitedFallback.mediaType()); // Exception diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateWrapInterceptor.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateWrapInterceptor.java index 5b9b85c09..f2bed62c0 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateWrapInterceptor.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/instrument/resttemplate/EnhancedRestTemplateWrapInterceptor.java @@ -92,7 +92,7 @@ public class EnhancedRestTemplateWrapInterceptor { enhancedPluginContext.setDelay(System.currentTimeMillis() - startMillis); EnhancedResponseContext enhancedResponseContext = EnhancedResponseContext.builder() - .httpStatus(response.getStatusCode().value()) + .httpStatus(response.getRawStatusCode()) .httpHeaders(response.getHeaders()) .build(); enhancedPluginContext.setResponse(enhancedResponseContext);