Rajiv Kurian created KAFKA-3200: ----------------------------------- Summary: MessageSet from broker seems invalid Key: KAFKA-3200 URL: https://issues.apache.org/jira/browse/KAFKA-3200 Project: Kafka Issue Type: Bug Affects Versions: 0.9.0.0 Environment: Linux, running Oracle JVM 1.8 Reporter: Rajiv Kurian
I am writing a java consumer client for Kafka and using the protocol guide at https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol to parse buffers. I am currently running into a problem parsing certain fetch responses. Many times it works fine but some other times it does not. It might just be a bug with my implementation in which case I apologize. My messages are uncompressed and exactly 23 bytes in length and has null keys. So each Message in my MessageSet is exactly size 4 (crc) + 1(magic_bytes) + 1 (attributes) + 4(key_num_bytes) + 0 (key is null) + 4(num_value_bytes) + 23(value_bytes) = 37 bytes. So each element of the MessageSet itself is exactly 37 (size of message) + 8 (offset) + 4 (message_size) = 49 bytes. In comparison an empty message set element should be of size 8 (offset) + 4 (message_size) + 4 (crc) + 1(magic_bytes) + 1 (attributes) + 4(key_num_bytes) + 0 (key is null) + 4(num_value_bytes) + 0(value is null) = 26 bytes I occasionally receive a MessageSet which says size is 1000. A size of 1000 is not divisible by my MessageSet element size which is 49 bytes. When I parse such a message set I can actually read 20 of message set elements(49 bytes) which is 980 bytes. I have 20 extra bytes to parse now which is actually less than even an empty message (26 bytes). At this moment I don't know how to parse the messages any more. I will attach a file for a response that can actually cause me to run into this problem as well as the sample ccde. -- This message was sent by Atlassian JIRA (v6.3.4#6332)