camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matteo Pavesi (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors
Date Wed, 29 Oct 2014 16:46:33 GMT

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

Matteo Pavesi updated CAMEL-7973:
---------------------------------
    Description: 
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.

  was:
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.


> 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
>            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)

Mime
View raw message