Claus Ibsen created CAMEL-24258:
-----------------------------------
Summary: camel-microprofile-fault-tolerance - Clean up dead code
and improve JMX/observability parity
Key: CAMEL-24258
URL: https://issues.apache.org/jira/browse/CAMEL-24258
Project: Camel
Issue Type: Improvement
Components: eip
Reporter: Claus Ibsen
Follow-up from the Circuit Breaker EIP modernization work (CAMEL-24137,
CAMEL-21857).
The camel-microprofile-fault-tolerance module has two areas that need attention:
h3. 1. Remove dead timeoutPoolSize option
{{timeoutPoolSize}} was deprecated in 4.22.0 (CAMEL-21857 switched to the
TypedGuard API) but the reifier still reads and sets it. The field, getter,
setter, copy constructor entry, and JMX attribute all exist despite the value
having no effect. This dead code should be removed across:
- {{FaultToleranceConfigurationCommon}} (model)
- {{FaultToleranceConfiguration}} (runtime config)
- {{FaultToleranceReifier}} (still calls {{target.setTimeoutPoolSize(...)}})
- {{FaultToleranceProcessor}} (still exposes via @ManagedAttribute)
- DSL builders ({{FaultToleranceConfigurationDefinition}}, etc.)
h3. 2. JMX and observability parity with camel-resilience4j
{{FaultToleranceProcessor}} is significantly behind {{ResilienceProcessor}} in
terms of JMX managed attributes and operations:
*Missing operations (all 4):*
- {{transitionToCloseState()}}
- {{transitionToOpenState()}}
- {{transitionToHalfOpenState()}}
- {{transitionToForcedOpenState()}}
SmallRye FT's {{CircuitBreakerMaintenance}} API supports state transitions in
recent versions, so at least some of these could be added.
*Missing live metrics:*
- {{getFailureRate()}} currently returns the _configured threshold_, not the
_actual live failure rate_. The method name is misleading compared to its
Resilience4j counterpart which returns live data from
{{circuitBreaker.getMetrics()}}.
- No live call counts (successful, failed, buffered, not-permitted)
- No slow call metrics
Some of these gaps are inherent to SmallRye FT's narrower API, but the state
transitions and the misleading {{getFailureRate()}} method name should be
addressable.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)