Geoff Anderson created KAFKA-2750: ------------------------------------- Summary: Sender.java: handleProduceResponse does not check protocol version Key: KAFKA-2750 URL: https://issues.apache.org/jira/browse/KAFKA-2750 Project: Kafka Issue Type: Bug Reporter: Geoff Anderson
If you try run an 0.9 producer against 0.8.2.2 kafka broker, you get a fairly cryptic error message: [2015-11-04 18:55:43,583] ERROR Uncaught error in kafka producer I/O thread: (org.apache.kafka.clients.producer.internals.Sender) org.apache.kafka.common.protocol.types.SchemaException: Error reading field 'throttle_time_ms': java.nio.BufferUnderflowException at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:71) at org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:462) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:279) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:216) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:141) Although we shouldn't expect an 0.9 producer to work against an 0.8.X broker since the protocol version has been increased, perhaps the error could be clearer. The cause seems to be that in Sender.java, handleProduceResponse does not to have any mechanism for checking the protocol version of the received produce response - it just calls a constructor which blindly tries to grab the throttle time field which in this case fails. -- This message was sent by Atlassian JIRA (v6.3.4#6332)