[jira] [Created] (CAMEL-8039) Implement halfOpen state in CircuitBreaker

2014-11-12 Thread Matteo Pavesi (JIRA)
Matteo Pavesi created CAMEL-8039:


 Summary: Implement halfOpen state in CircuitBreaker
 Key: CAMEL-8039
 URL: https://issues.apache.org/jira/browse/CAMEL-8039
 Project: Camel
  Issue Type: Improvement
  Components: camel-core
Reporter: Matteo Pavesi
Priority: Trivial
 Fix For: 2.14.1


The CircuitBreaker EIP described in ReleaseIt! has an halfOpen state. It means 
that after the halfOpen time timeout, the circuitBreaker is accepting one more 
exchange and it close the circuit only if the processor succeeds.

This is not implemented in Camel, I would like to propose the attached patch 
with code and test for implementing the HalfOpen state.




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


[jira] [Commented] (CAMEL-8039) Implement halfOpen state in CircuitBreaker

2014-11-12 Thread Matteo Pavesi (JIRA)

[ 
https://issues.apache.org/jira/browse/CAMEL-8039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14207931#comment-14207931
 ] 

Matteo Pavesi commented on CAMEL-8039:
--

Improvement for the camel CircuitBreaker EIP implementation

 Implement halfOpen state in CircuitBreaker
 --

 Key: CAMEL-8039
 URL: https://issues.apache.org/jira/browse/CAMEL-8039
 Project: Camel
  Issue Type: Improvement
  Components: camel-core
Reporter: Matteo Pavesi
Priority: Trivial
 Fix For: 2.14.1


 The CircuitBreaker EIP described in ReleaseIt! has an halfOpen state. It 
 means that after the halfOpen time timeout, the circuitBreaker is accepting 
 one more exchange and it close the circuit only if the processor succeeds.
 This is not implemented in Camel, I would like to propose the attached patch 
 with code and test for implementing the HalfOpen state.



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


[jira] [Updated] (CAMEL-8039) Implement halfOpen state in CircuitBreaker

2014-11-12 Thread Matteo Pavesi (JIRA)

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

Matteo Pavesi updated CAMEL-8039:
-
Attachment: 0001-halfOpen-state-in-CircuitBreaker.patch

The proposed implementation and testing

 Implement halfOpen state in CircuitBreaker
 --

 Key: CAMEL-8039
 URL: https://issues.apache.org/jira/browse/CAMEL-8039
 Project: Camel
  Issue Type: Improvement
  Components: camel-core
Reporter: Matteo Pavesi
Priority: Trivial
 Fix For: 2.14.1

 Attachments: 0001-halfOpen-state-in-CircuitBreaker.patch


 The CircuitBreaker EIP described in ReleaseIt! has an halfOpen state. It 
 means that after the halfOpen time timeout, the circuitBreaker is accepting 
 one more exchange and it close the circuit only if the processor succeeds.
 This is not implemented in Camel, I would like to propose the attached patch 
 with code and test for implementing the HalfOpen state.



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


[jira] [Commented] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors

2014-10-30 Thread Matteo Pavesi (JIRA)

[ 
https://issues.apache.org/jira/browse/CAMEL-7973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14189924#comment-14189924
 ] 

Matteo Pavesi commented on CAMEL-7973:
--

Thanks for the interest in this issue and for the quick change. I've also 
learned something from the fix to my patch :)


 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)


[jira] [Updated] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors

2014-10-29 Thread Matteo Pavesi (JIRA)

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


[jira] [Created] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors

2014-10-27 Thread Matteo Pavesi (JIRA)
Matteo Pavesi created CAMEL-7973:


 Summary: 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


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 submit a pull request with the failing test and a proposal of 
solution.



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


[jira] [Updated] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors

2014-10-27 Thread Matteo Pavesi (JIRA)

 [ 
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.

  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 submit a pull request 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

 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.



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


[jira] [Updated] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors

2014-10-27 Thread Matteo Pavesi (JIRA)

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

Matteo Pavesi updated CAMEL-7973:
-
Attachment: 0002-CAMEL-7973-fix-circuit-breaker-with-async-processors.patch
0001-CAMEL-7973-added-failing-test-for-circuit-breaker-wi.patch

Patches (based on branch 2.14.x) containing failing test and proposed 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.



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


[jira] [Comment Edited] (CAMEL-7973) CircuitBreakerLoadBalancer fails on async processors

2014-10-27 Thread Matteo Pavesi (JIRA)

[ 
https://issues.apache.org/jira/browse/CAMEL-7973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14185291#comment-14185291
 ] 

Matteo Pavesi edited comment on CAMEL-7973 at 10/27/14 4:10 PM:


Added patches (based on branch 2.14.x) containing failing test and proposed 
solution.


was (Author: matteo pavesi):
Patches (based on branch 2.14.x) containing failing test and proposed 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.



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