davsclaus opened a new pull request, #27681: URL: https://github.com/apache/camel/pull/27681
When a route marks the exchange rollback only (`markRollbackOnly()`, `markRollbackOnlyLast()`), there is no exception on the exchange, and these consumers treated it as a success: - **camel-jpa**: the consumer deleted the entity (or called `@Consumed`) and committed the poll. Now the entity is not consumed. With `transacted=true` a `RollbackExchangeException` rolls back the whole poll, as a failed exchange does. With `transacted=false` the entity is skipped quietly (DEBUG log, no WARN for a deliberate rollback) and the rest of the batch is still consumed; the next poll consumes it again. - **camel-hazelcast** (seda, `transacted=true`): the transaction was committed, so the message was removed from the queue. Now the transaction is rolled back. Same semantics as CAMEL-25511 (camel-jooq) and CAMEL-25527 (camel-mybatis / camel-sql, #27677). Tests: `JpaConsumerRollbackOnlyTest` (non-transacted, transacted, `@Consumed`; embedded Derby, `poll()` called directly) and `HazelcastSedaTransactedRollbackOnlyTest` (mocked transaction context); all fail without the fix. Docs: jpa component doc + 4.23 upgrade guide. Fixes [CAMEL-25550](https://issues.apache.org/jira/browse/CAMEL-25550) _Claude Code on behalf of davsclaus_ 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
