You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/07/25 11:26:00 UTC

[jira] [Created] (CAMEL-24258) camel-microprofile-fault-tolerance - Clean up dead code and improve JMX/observability parity

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)