[
https://issues.apache.org/jira/browse/CAMEL-7973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14189791#comment-14189791
]
Willem Jiang edited comment on CAMEL-7973 at 10/30/14 8:28 AM:
---
Hi,Claus.
Yes, we cannot just call the process method there. I'm working on it to add the
async processing code :)
was (Author: njiang):
Hi,Claus.
Yes, we cannot just call the process method there. I'm work on it :)
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
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)