Mihai Lucian created KAFKA-19479:
------------------------------------
Summary: at_least_once mode in Kafka Streams silently drops
messages when the producer fails with MESSAGE_TOO_LARGE, violating delivery
guarantees.
Key: KAFKA-19479
URL: https://issues.apache.org/jira/browse/KAFKA-19479
Project: Kafka
Issue Type: Bug
Components: streams
Affects Versions: 4.0.0
Reporter: Mihai Lucian
Assignee: Mihai Lucian
*Description*
It appears there is a scenario where Kafka Streams running with
{{processing.guarantee=at_least_once}} does {*}not uphold its delivery
guarantees{*}, resulting in *message loss.*
*Reproduction Details*
*We run a simple Kafka Streams topology like the following:*
*kotlin```*
props[StreamsConfig.APPLICATION_ID_CONFIG] = "poc-at-least-once"
props[StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG] =
Serdes.String().javaClass.name
props[StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG] =
Serdes.String().javaClass.name
props[StreamsConfig.PROCESSING_GUARANTEE_CONFIG] = StreamsConfig.AT_LEAST_ONCE
// Large producer batch size to induce MESSAGE_TOO_LARGE
props[ProducerConfig.LINGER_MS_CONFIG] = "300000"
props[ProducerConfig.BATCH_SIZE_CONFIG] = "33554432"
// Custom handler registered (never triggered)
props[StreamsConfig.PRODUCTION_EXCEPTION_HANDLER_CLASS_CONFIG] =
"poc.MyProductionExceptionHandler"
val stream = streamsBuilder.stream<String, String>("input.topic")
stream.peek \{ key, value -> println("$key:$value") }
.to("output.topic")
```
--
This message was sent by Atlassian Jira
(v8.20.10#820010)