[ https://issues.apache.org/jira/browse/KAFKA-3442?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15206723#comment-15206723 ]
Jun Rao commented on KAFKA-3442: -------------------------------- There is another tricky issue to think through. If a client sends a fetch request with a max.partition.fetch.bytes smaller than the message size in a topic/partition, before 0.10.0, the broker will send a fetch response with a partition payload of exactly max.partition.fetch.bytes bytes. When the client iterates the payload, it will realize that it can't iterate a single complete message and yet the payload size is > 0, it will then just error out with RecordTooLargeException since it can't make progress w/o a larger max.partition.fetch.bytes bytes. The current patch instead will send an empty payload to the client. Then, the client doesn't know that it actually gets stuck. So, when doing a down conversion, we need to somehow convert a partial message as well if the first message size is larger than max.partition.fetch.bytes. [~dana.powers], [~edenhill], how did you handle this case in the non-java client? Do you just do the same check as in the java client, i.e., if can't iterate a single complete message in the payload from a partition in the fetch response and yet the payload size is > 0, just error out with RecordTooLargeException? The 0.10.0 broker may need to down convert messages to v0 format when serving fetch request from pre 0.10.0 clients. It just that after the conversion, the partial message returned may not be exactly of size max.partition.fetch.bytes. > FetchResponse size exceeds max.partition.fetch.bytes > ---------------------------------------------------- > > Key: KAFKA-3442 > URL: https://issues.apache.org/jira/browse/KAFKA-3442 > Project: Kafka > Issue Type: Bug > Affects Versions: 0.10.0.0 > Reporter: Dana Powers > Assignee: Jiangjie Qin > Priority: Blocker > Fix For: 0.10.0.0 > > > Produce 10000 byte message to topic foobar > Fetch foobar w/ max.partition.fetch.bytes=1024 > Test expects to receive a truncated message (~1024 bytes). 0.8 and 0.9 pass > this test, but 0.10 FetchResponse has full message, exceeding the max > specified in the FetchRequest. > I tested with v0 and v1 apis, both fail. Have not tested w/ v2 -- This message was sent by Atlassian JIRA (v6.3.4#6332)