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)