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

Claus Ibsen resolved CAMEL-25550.
---------------------------------
    Resolution: Fixed

> camel-jpa, camel-hazelcast - a transacted consumer commits an exchange that 
> is marked rollback only
> ---------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25550
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25550
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-hazelcast, camel-jpa
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.24.0
>
>
> When a route marks the exchange as rollback only (markRollbackOnly() / 
> markRollbackOnlyLast() / exchange.setRollbackOnly(true)) there is no 
> exception on the exchange, and these consumers treat it as success:
> *camel-jpa* - JpaConsumer.processBatch only checks exchange.getException() 
> before running the delete handler, so the @Consumed method is invoked (or the 
> entity is removed with consumeDelete=true) and the transaction of the batch 
> is committed. With transacted=true this contradicts the option, which says 
> the whole batch is rolled back. The rollback() EIP is not affected as it sets 
> a RollbackExchangeException.
> *camel-hazelcast* - the hazelcast-seda consumer with transacted=true commits 
> the Hazelcast transaction whenever the exchange has no exception, so a 
> rollback only message is removed from the queue.
> Other transactional consumers (jms, sjms, spring-rabbitmq, kafka 
> transactions, jooq, and camel-mybatis/camel-sql via CAMEL-25527) honour 
> rollback only. The fix is to treat a rollback only exchange as not consumed, 
> the same way as camel-jooq (CAMEL-25511) and camel-mybatis/camel-sql 
> (CAMEL-25527).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to