You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Otavio Rodolfo Piske (Jira)" <ji...@apache.org> on 2021/09/02 10:51:00 UTC

[jira] [Commented] (CAMEL-16914) camel-kafka: possible corruption of idempotency messages when using KafkaIdempotentRepository

    [ https://issues.apache.org/jira/browse/CAMEL-16914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17408731#comment-17408731 ] 

Otavio Rodolfo Piske commented on CAMEL-16914:
----------------------------------------------

This ALWAYS happen in a block of 128 records: it works OK for 128 records, then skip 128, then works OK for the subsequent 128 and so on.

 

After a a preliminary observation, I think this is being caused because the code is assuming the key is always String: https://github.com/apache/camel/blob/camel-3.11.x/components/camel-kafka/src/main/java/org/apache/camel/processor/idempotent/kafka/KafkaIdempotentRepository.java#L456

 

This seems to be messing up with the add/confirms/remove logic:

 
{code:java}
[1] 2021-09-02 10:42:51,230 DEBUG [org.apa.cam.pro.ide.kaf.KafkaIdempotentRepository$TopicPoller] (Camel (camel-1) thread #0 - KafkaIdempotentRepository) Adding to cache messageId:q 
[1] 2021-09-02 10:42:52,229 DEBUG [org.apa.cam.pro.ide.kaf.KafkaIdempotentRepository$TopicPoller] (Camel (camel-1) thread #0 - KafkaIdempotentRepository) Adding to cache messageId:r{code}

> camel-kafka: possible corruption of idempotency messages when using KafkaIdempotentRepository 
> ----------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-16914
>                 URL: https://issues.apache.org/jira/browse/CAMEL-16914
>             Project: Camel
>          Issue Type: Task
>          Components: camel-kafka
>    Affects Versions: 3.11.1
>            Reporter: Otavio Rodolfo Piske
>            Priority: Major
>         Attachments: FakeDataProducer.java, MessageLossReproducer.java
>
>
> [^FakeDataProducer.java][^MessageLossReproducer.java]I noticed that when using the KafkaIdempotentRepository, sometimes it seems that it is losing or corrupting the ID information, causing loss of messages.
>  
> When reading the topic used for publishing the idempotency data with kafkacat I get:
>  
> {code:java}
> ERROR: Failed to format message in fake-data-inserts [1] at offset 39: expected key end-of-input, but 2 bytes remaining : terminating{code}
>  
> As a result, this causes the loss of messages because the consumers cannot go further than the corrupted record.
>  
> I found this while using Camel K and Strimzi (on a setup with 3 Kafkas using 1 topic with 3 partitions).
>  
> I couldn't test w/ 3.12 yet, but I suspect it would also have the same problem.
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)