You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@kafka.apache.org by Takafumi Saito <s....@gmail.com> on 2017/08/08 05:22:19 UTC

How to detect delivery failure by version mismatch at client side

Hi,

When producer had sent records which contain header values to broker
servers, brokers did not receive the records and logged this message.

======
[2017-08-03 21:00:01,130] ERROR [Replica Manager on Broker 1]: Error
processing append operation on partition topic-0
(kafka.server.ReplicaManager)
java.lang.IllegalArgumentException: Magic v1 does not support record headers
        at org.apache.kafka.common.record.MemoryRecordsBuilder.
appendWithOffset(MemoryRecordsBuilder.java:385)
        at org.apache.kafka.common.record.MemoryRecordsBuilder.
appendWithOffset(MemoryRecordsBuilder.java:424)
        at org.apache.kafka.common.record.MemoryRecordsBuilder.
appendWithOffset(MemoryRecordsBuilder.java:577)
 ...
======

This error is caused by setting old version (0.10.2 or earlier) at
`log.message.version.format` of broker.
But client was not noticed delivery failure and kept on sending messages.
As a similar case, this error is caused when old consumer try to subscribe
records which contains header value. And brokers do not send record to the
consumer.

How do I make client detect this failure?

I want to handle IllegalArgumentException at client side or make brokers
receive/transfer records as old message style even if header values are
found in record.

Thank you,

Takafumi Saito