[ https://issues.apache.org/jira/browse/CAMEL-19894?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Otavio Rodolfo Piske updated CAMEL-19894: ----------------------------------------- Estimated Complexity: Novice (was: Unknown) > camel-kafka: enabling "breakOnFirstError" causes to skip records on exception > ----------------------------------------------------------------------------- > > Key: CAMEL-19894 > URL: https://issues.apache.org/jira/browse/CAMEL-19894 > Project: Camel > Issue Type: Bug > Components: camel-kafka > Affects Versions: 3.21.0, 4.0.0 > Reporter: akrivda > Priority: Minor > Labels: help-wanted > > {*}Reproducing{*}: > * Configure camel kafka consumer with with "breakOnFirstError" = "true" > * Setup a topic with exactly 2 partitions > * Produce a series of records to kafka record to both partitions. > * Ensure offset is commited (I've done that with manual commit, autocommit > *MAY* have a second bug also, check the description) > * Make a route to consume this topic. Ensure the first poll gets records > from both partitions. Ensure the second-to-consume partition has some more > records to fetch in the next poll. > * Trigger an error when processing exactly first record of the > second-to-consume partition > *Expected behavior:* > * Application should consume all records from the first partition, and none > from the second. > *Actual behavior:* > * Application should consume all records from the first partition. Some > records from the second partition are skipped (the number depends on quantity > consumed from the first in a single poll). > > This bug was introduced in https://issues.apache.org/jira/browse/CAMEL-18350, > which had fixed a major issue with breakOnFirstError, but had some edge cases. > The root cause is that lastResult variable is not cleaned between polls (and > between partitions loop iterations), and might have an invalid dirty value > got from the previous iteration. And it has no chance to be correctly > initialized if exception happens on the first record of partition. Then > forced sync commit is done to the right (new) partition but with invalid > "random" (dirty) offset. > I've adjusted a project test project for CAMEL-18350 (many thanks to > [~klease78]) to demonstrate the issue and published it to github. Check the > failing test in the project: > [https://github.com/Krivda/camel-bug-reproduction] > P.S. Also, there *might* be a second bug related to this issue which *may* > occur with enableAutoCommit=true : when the bug occurs, physical commit > *might* be not made to already processed partitions, which may result in > double processing. But i haven't investigated this issue further. > P.P.S - Please note, that the github project contains a very detailed > description of the behavior pointing to the specific failing lines of code, > that should be very helpful in investigation. > -- This message was sent by Atlassian Jira (v8.20.10#820010)