From 9fa7ad266b900cbf2e49e256739f30acbf21be90 Mon Sep 17 00:00:00 2001 From: Haotian Zhang Date: Mon, 17 Feb 2025 15:49:35 +0800 Subject: [PATCH] feat:support circuit breaker metrics reporting. (#1495) --- CHANGELOG.md | 1 + .../polaris/circuitbreaker/PolarisCircuitBreaker.java | 10 +++------- .../circuitbreaker/reporter/CircuitBreakerPlugin.java | 1 + .../enhancement/stat/config/PolarisStatProperties.java | 6 +++--- .../additional-spring-configuration-metadata.json | 4 ++-- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 378bd31ee..08ebde940 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,4 +27,5 @@ - [feat:support auth.](https://github.com/Tencent/spring-cloud-tencent/pull/1541) - [feat:support smooth upgrade from tsf. ](https://github.com/Tencent/spring-cloud-tencent/pull/1542) - [feat:support polaris event.](https://github.com/Tencent/spring-cloud-tencent/pull/1543) +- [feat:support circuit breaker metrics reporting.](https://github.com/Tencent/spring-cloud-tencent/pull/1544) diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java index 7414d1251..d869d2ef5 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreaker.java @@ -74,7 +74,7 @@ public T run(Supplier toRun, Function fallback) { } catch (CallAbortedException e) { LOGGER.debug("PolarisCircuitBreaker CallAbortedException: {}", e.getMessage()); - PolarisCircuitBreakerUtils.reportStatus(consumerAPI, conf, e); + reportStatus(e); return fallback.apply(e); } catch (Exception e) { @@ -97,11 +97,7 @@ public void onError(InvokeContext.ResponseContext responseContext) { invokeHandler.onError(responseContext); } - public PolarisCircuitBreakerConfigBuilder.PolarisCircuitBreakerConfiguration getConf() { - return conf; - } - - public ConsumerAPI getConsumerAPI() { - return consumerAPI; + public void reportStatus(CallAbortedException e) { + PolarisCircuitBreakerUtils.reportStatus(consumerAPI, conf, e); } } diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java index 092b3684c..3618b27c8 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/reporter/CircuitBreakerPlugin.java @@ -90,6 +90,7 @@ public void run(EnhancedPluginContext context) throws Throwable { } catch (CallAbortedException e) { LOG.debug("[CircuitBreakerPlugin] request is aborted. request service url=[{}]", request.getServiceUrl()); + polarisCircuitBreaker.reportStatus(e); if (e.getFallbackInfo() != null) { Object fallbackResponse = new PolarisCircuitBreakerHttpResponse(e.getFallbackInfo()); putMetadataObjectValue(ContextConstant.CircuitBreaker.CIRCUIT_BREAKER_FALLBACK_HTTP_RESPONSE, fallbackResponse); diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java index 0477a259b..d871b0d7f 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatProperties.java @@ -52,10 +52,10 @@ public class PolarisStatProperties { /** * Push metrics interval. - * unit: milliseconds default 30s. + * unit: milliseconds default 60s. */ - @Value("${spring.cloud.polaris.stat.pushgateway.push-interval:#{30000}}") - private Long pushGatewayPushInterval = 30 * 1000L; + @Value("${spring.cloud.polaris.stat.pushgateway.push-interval:#{60000}}") + private Long pushGatewayPushInterval = 60 * 1000L; /** * If push gateway gzip open. default false. diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 7c6745ba8..da7f0e8f6 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-tencent-rpc-enhancement/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -69,9 +69,9 @@ { "name": "spring.cloud.polaris.stat.pushgateway.push-interval", "type": "java.lang.Long", - "description": "Push metrics interval. unit: milliseconds default 30s.", + "description": "Push metrics interval. unit: milliseconds default 60000ms.", "sourceType": "com.tencent.cloud.rpc.enhancement.stat.config.PolarisStatProperties", - "defaultValue": 30000 + "defaultValue": 60000 }, { "name": "spring.cloud.polaris.stat.pushgateway.open-gzip",