[ https://issues.apache.org/jira/browse/CAMEL-22251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18007877#comment-18007877 ]
Luis Sergio Faria Carneiro commented on CAMEL-22251: ---------------------------------------------------- Zulip thread about this issue: https://camel.zulipchat.com/#narrow/channel/257298-camel/topic/Different.20event.20behavior.20depending.20on.20route.20trigger/with/529269637 > Incorrect Exchange status when using camel-rest > ----------------------------------------------- > > Key: CAMEL-22251 > URL: https://issues.apache.org/jira/browse/CAMEL-22251 > Project: Camel > Issue Type: Bug > Affects Versions: 4.8.8, 4.10.5, 4.12.0, 4.13.0 > Reporter: Luis Sergio Faria Carneiro > Priority: Major > > Consider the following integration yaml file and also an Event Listener: > {code:java} > - from: > uri: "rest:get:/demo" > steps: > - removeHeaders: > pattern: "Camel*" > - to: > uri: https://httpbin.org/status/500 > parameters: > bridgeEndpoint: true > httpMethod: GET {code} > {code:java} > package com.lsergio.poc; > import org.apache.camel.spi.CamelEvent; > import org.apache.camel.support.EventNotifierSupport; > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > import org.apache.camel.*; > public class MyEventListener extends EventNotifierSupport { > protected Logger log = LoggerFactory.getLogger(getClass()); > public void notify(CamelEvent event) throws Exception { > if (event.getSource() instanceof Exchange) { > Exchange ex = (Exchange)event.getSource(); > log.info("Event class: " + event.getClass()); > log.info("Event: " + event.getType().name() + " - Failed:" + > ex.isFailed() + " Id: " + ex.getExchangeId() + " - Exception: " + > ex.getException()); > log.info("--------------------------"); > } > } > } > {code} > The integration intentionally fails by calling an endpoint that always > returns status 5xx. > After running this code with > {code:java} > jbang -Dcamel.jbang.version=4.13.0 camel@apache/camel run integration.yaml > MyEventListener.java{code} > we get the following output: > {code:java} > 2025-07-14 16:45:57.233 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeCreatedEvent > 2025-07-14 16:45:57.236 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : Event: ExchangeCreated - > Failed:false Id: 57E85F0594C3DD7-0000000000000001 - Exception: null > 2025-07-14 16:45:57.236 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : -------------------------- > 2025-07-14 16:45:57.246 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeSendingEvent > 2025-07-14 16:45:57.246 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : Event: ExchangeSending - > Failed:false Id: 57E85F0594C3DD7-0000000000000001 - Exception: null > 2025-07-14 16:45:57.246 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : -------------------------- > 2025-07-14 16:45:58.022 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeSentEvent > 2025-07-14 16:45:58.022 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : Event: ExchangeSent - Failed:true > Id: 57E85F0594C3DD7-0000000000000001 - Exception: > org.apache.camel.http.base.HttpOperationFailedException: HTTP operation > failed invoking https://httpbin.org/status/500 with statusCode: 500 > 2025-07-14 16:45:58.022 INFO 412676 --- [worker-thread-0] > com.lsergio.poc.MyEventListener : -------------------------- > 2025-07-14 16:45:58.036 INFO 412676 --- [ntloop-thread-0] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeCompletedEvent > 2025-07-14 16:45:58.037 INFO 412676 --- [ntloop-thread-0] > com.lsergio.poc.MyEventListener : Event: ExchangeCompleted - > Failed:false Id: 57E85F0594C3DD7-0000000000000001 - Exception: null > 2025-07-14 16:45:58.037 INFO 412676 --- [ntloop-thread-0] > com.lsergio.poc.MyEventListener : -------------------------- {code} > We can see an *ExchangeSent* event where the exchange is marked as failed, > but the *ExchangeCompleted* event is not. > Also, changing the bridgeEndpoint param to false does not change the behavior. > However, changing the route trigger to quartz: > > {code:java} > - from: > uri: "quartz://ipaas/trigger?cron=0+*+*+?+*+MON-FRI" > steps: > - removeHeaders: > pattern: "Camel*" > - to: > uri: https://httpbin.org/status/500 > parameters: > bridgeEndpoint: true > httpMethod: GET {code} > yields a different result: > > > {code:java} > 2025-07-14 16:44:00.016 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeCreatedEvent > 2025-07-14 16:44:00.024 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event: ExchangeCreated - > Failed:false Id: 03955C93A9468F8-0000000000000000 - Exception: null > 2025-07-14 16:44:00.024 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : -------------------------- > 2025-07-14 16:44:00.033 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeSendingEvent > 2025-07-14 16:44:00.033 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event: ExchangeSending - > Failed:false Id: 03955C93A9468F8-0000000000000000 - Exception: null > 2025-07-14 16:44:00.033 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : -------------------------- > 2025-07-14 16:44:01.078 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeSentEvent > 2025-07-14 16:44:01.080 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event: ExchangeSent - Failed:true > Id: 03955C93A9468F8-0000000000000000 - Exception: > org.apache.camel.http.base.HttpOperationFailedException: HTTP operation > failed invoking https://httpbin.org/status/500 with statusCode: 502 > 2025-07-14 16:44:01.081 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : -------------------------- > 2025-07-14 16:44:01.095 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event class: class > org.apache.camel.impl.event.ExchangeFailedEvent > 2025-07-14 16:44:01.095 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : Event: ExchangeFailed - > Failed:true Id: 03955C93A9468F8-0000000000000000 - Exception: > org.apache.camel.http.base.HttpOperationFailedException: HTTP operation > failed invoking https://httpbin.org/status/500 with statusCode: 502 > 2025-07-14 16:44:01.095 INFO 409081 --- [ration_Worker-1] > com.lsergio.poc.MyEventListener : -------------------------- {code} > Now there an *ExchangeFailed* event instead of the *ExchangeCompleted* event. > This is the behavior I was expecting with the rest component, as the request > indeed failed. > > > -- This message was sent by Atlassian Jira (v8.20.10#820010)