Hi Its a big jump from camel 3.4 to 3.18. You can help narrow it down by testing the versions in between, eg 3.5 to 3.17.
On Wed, Sep 14, 2022 at 1:59 PM Abhishek Rajendra Yadav <abhishek.ya...@wu.com.invalid> wrote: > Hi, > > Please find the github repo below for the demo project which demonstrates > the stated circuit breaker issue. > > https://github.com/abhi0402/camel-demo > > It uses spring boot 2.6.7 and Java 17 > > Endpoint exposed: http://localhost:9002/camel/v1/users > > In 3.4.2 camel version: > > Upon hitting the above endpoint 4 times(configured in > demo.minimumNumberOfCalls property) the 5th time it throws an circuit > breaker exception which is expected. > > In 3.18.2 camel version: > > Upon hitting the above endpoint 4 times(configured in > demo.minimumNumberOfCalls property) the 5th time it doesn't throws any > exception, just returns an empty response. > > The camel version can be changed in pom.xml under properties tag. > > Regards, > Abhishek > > > On 2022/09/13 12:56:35 Claus Ibsen wrote: > > Hi > > > > Are you able to put together a sample Camel project that reproduces this > > problem, and upload it to either github somewhere, or as a .zip file? > > And you are welcome to create a JIRA ticket, where you can upload the > .zip > > file. > > > > That is easier for us to use to look into this. > > And you are surely welcome to dive into the code and see if you can find > > the problem, or link back to code changes (JIRAs) that can help clarify > > this. > > > > > > > > > > > > > > On Tue, Sep 13, 2022 at 12:28 PM Abhishek Rajendra Yadav > > <ab...@wu.com.invalid> wrote: > > > > > Hi, > > > > > > While upgrading Camel from our current verion (3.4.2) to the latest > > > version (3.18.2) we are running into an issue where the resilience4j > > > circuit breaker is not working as expected. After the circuit is OPEN > it > > > should throw an exception(CallNotPermittedException) same as 3.4.2 but > > > instead the execution continues without throwing any exception. > > > > > > Upon further debugging, we could see the difference in execution logs > > > which are attached below. > > > > > > logs from 3.4.2 camel version - > > > > > > 2022-09-13T10:28:59,162 DEBUG [http-nio-8086-exec-8] > o.a.c.s.CamelLogger: > > > Request is routed to service2 > > > 2022-09-13T10:28:59,163 DEBUG [ForkJoinPool.commonPool-worker-1] > > > i.g.r.c.i.CircuitBreakerStateMachine: No Consumers: Event > NOT_PERMITTED not > > > published > > > 2022-09-13T10:28:59,163 DEBUG [http-nio-8086-exec-8] > > > o.a.c.p.PipelineHelper: Message exchange has failed: so breaking out of > > > pipeline for exchange: Exchange[ID-WKSWUPUN2455-1663045118166-0-5] > > > Exception: > io.github.resilience4j.circuitbreaker.CallNotPermittedException: > > > CircuitBreaker 'circuitBreaker3' is OPEN and does not permit further > calls > > > 2022-09-13T10:28:59,163 DEBUG [http-nio-8086-exec-8] > o.a.c.s.CamelLogger: > > > Failed delivery for (MessageId: ID-WKSWUPUN2455-1663045118166-0-5 on > > > ExchangeId: ID-WKSWUPUN2455-1663045118166-0-5). On delivery attempt: 0 > > > caught: > io.github.resilience4j.circuitbreaker.CallNotPermittedException: > > > CircuitBreaker 'circuitBreaker3' is OPEN and does not permit further > calls > > > 2022-09-13T10:28:59,163 ERROR [http-nio-8086-exec-8] > > > c.w.c.i.o.c.p.CaseExceptionProcessor: > > > io.github.resilience4j.circuitbreaker.CallNotPermittedException: > > > CircuitBreaker 'circuitBreaker3' is OPEN and does not permit further > calls > > > at > > > > io.github.resilience4j.circuitbreaker.CallNotPermittedException.createCallNotPermittedException(CallNotPermittedException.java:48) > > > at > > > > io.github.resilience4j.circuitbreaker.internal.CircuitBreakerStateMachine$OpenState.acquirePermission(CircuitBreakerStateMachine.java:689) > > > at > > > > io.github.resilience4j.circuitbreaker.internal.CircuitBreakerStateMachine.acquirePermission(CircuitBreakerStateMachine.java:206) > > > at > > > > io.github.resilience4j.circuitbreaker.CircuitBreaker.lambda$decorateCallable$3(CircuitBreaker.java:168) > > > at > > > > org.apache.camel.component.resilience4j.ResilienceProcessor$CircuitBreakerTimeoutTask.get(ResilienceProcessor.java:517) > > > at > > > > java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) > > > at > > > > java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) > > > at > > > > java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) > > > at > > > > java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) > > > at > java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) > > > at > > > > java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) > > > at > > > > java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) > > > > > > 2022-09-13T10:28:59,164 DEBUG [http-nio-8086-exec-8] > > > o.a.c.p.PipelineHelper: Message exchange has failed: so breaking out of > > > pipeline for exchange: Exchange[ID-WKSWUPUN2455-1663045118166-0-5] > Handled > > > by the error handler. > > > 2022-09-13T10:28:59,166 DEBUG [http-nio-8086-exec-8] > > > o.a.c.h.c.DefaultHttpBinding: Streaming response in chunked mode with > > > buffer size 8192 > > > 2022-09-13T10:29:48,360 DEBUG [CircuitBreakerAutoTransitionThread] > > > i.g.r.c.i.CircuitBreakerStateMachine: No Consumers: Event > STATE_TRANSITION > > > not published > > > > > > logs from 3.18.2 camel version - > > > > > > 2022-09-13T10:49:10,036 DEBUG [http-nio-8086-exec-7] > o.a.c.s.CamelLogger: > > > Request is routed to service2 > > > 2022-09-13T10:49:10,037 DEBUG [http-nio-8086-exec-7] > > > i.g.r.c.i.CircuitBreakerStateMachine: No Consumers: Event > NOT_PERMITTED not > > > published > > > 2022-09-13T10:49:10,037 INFO [http-nio-8086-exec-7] > o.a.c.s.CamelLogger: > > > Message sent successfully > > > 2022-09-13T10:49:10,038 DEBUG [http-nio-8086-exec-7] > > > o.a.c.p.FilterProcessor: Filter matches: true for exchange: > > > Exchange[4A5CC43440BCF38-0000000000000002] > > > 2022-09-13T10:49:10,038 DEBUG [http-nio-8086-exec-7] > > > o.a.c.h.c.DefaultHttpBinding: Streaming response in chunked mode with > > > buffer size 8192 > > > > > > Route Code snippet - > > > > > > from("direct:route24") > > > .streamCaching() > > > .log(LoggingLevel.DEBUG, "Request is routed to service2") > > > .process(requestProcessor) > > > .marshal().json(JsonLibrary.Jackson) > > > .circuitBreaker() > > > .resilience4jConfiguration(resilience4jConfigurationDefinition) > > > .to("{{url}}") > > > .end() > > > .log(LoggingLevel.INFO, "Message sent successfully"); > > > > > > > > > resilience4jConfiguration is as follows: > > > > > > #circuit breaker > > > failureRateThreshold=50 > > > automaticTransitionFromOpenToHalfOpenEnabled=true > > > waitDurationInOpenState=60 > > > minimumNumberOfCalls=4 > > > permittedNumberOfCallsInHalfOpenState=6 > > > slidingWindowType=COUNT_BASED > > > slidingWindowSize=100 > > > timeoutEnabled=true > > > timeoutDuration=30000 > > > slowCallRateThreshold=100 > > > slowCallDurationThreshold=60 > > > > > > How do we get the same behavior as previous(3.4.2) of circuit breaker > in > > > version 3.18.2 of camel? > > > > > > Thank you, > > > Abhishek > > > > > > > > > > > > The information transmitted, including any content in this > communication > > > is confidential, is intended only for the use of the intended > recipient and > > > is the property of the Western Union Company or its affiliates and > > > subsidiaries. If you are not the intended recipient, you are hereby > > > notified that any use of the information contained in or transmitted > with > > > the communication or dissemination, distribution, or copying of this > > > communication is strictly prohibited. If you have received this > > > communication in error, please notify the Western Union sender > immediately > > > by replying to this message and delete the original message > > > > > > > > > -- > > Claus Ibsen > > ----------------- > > http://davsclaus.com @davsclaus > > Camel in Action 2: https://www.manning.com/ibsen2 > > > The information transmitted, including any content in this communication > is confidential, is intended only for the use of the intended recipient and > is the property of the Western Union Company or its affiliates and > subsidiaries. If you are not the intended recipient, you are hereby > notified that any use of the information contained in or transmitted with > the communication or dissemination, distribution, or copying of this > communication is strictly prohibited. If you have received this > communication in error, please notify the Western Union sender immediately > by replying to this message and delete the original message > -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2