[ 
https://issues.apache.org/jira/browse/CAMEL-7973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Willem Jiang resolved CAMEL-7973.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 2.15.0
                   2.14.1

Applied the patch into camel master ,camel 2.14.x with thanks to Matteo. I also 
changed the patch by adding callback to check the failed exchange.

> CircuitBreakerLoadBalancer fails on async processors
> ----------------------------------------------------
>
>                 Key: CAMEL-7973
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7973
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.14.0
>            Reporter: Matteo Pavesi
>            Assignee: Willem Jiang
>            Priority: Minor
>             Fix For: 2.14.1, 2.15.0
>
>         Attachments: 
> 0001-CAMEL-7973-added-failing-test-for-circuit-breaker-wi.patch, 
> 0002-CAMEL-7973-fix-circuit-breaker-with-async-processors.patch
>
>
> The CircuitBreakerLoadBalancer works fine on direct synchronous processor, 
> but it seems to not behave as expected in case of async processor.
> To reproduce the error, it's enough to add a .threads(1) before the mock 
> processor in the CircuitBreakerLoadBalancerTest routeBuilder configuration.
> This misbehaviour seems to be related to the use of the 
> AsyncProcessorConverterHelper to force any processor to behave like 
> asynchronous. 
> I'm going to propose a patch with the failing test and a proposal of solution.
> EDIT:
> the patch contains the fix also to other unexpected behaviour of the 
> CircuitBreaker.
> The second problem addressed is that, after the opening of the circuit, the 
> RejectedExecutionException raised by the circuit breaker is set in the 
> Exchange, but it doesn't return. This cause the processor will receive the 
> Exchange even if the circuit is open. In this case also, if the 
> CircuitBreaker is instructed to react only to specific Exception, it will 
> close the circuit after the following request, because the raised exception 
> would be a RejectedExecutionException instead of the one specified in the 
> configuration.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to