[ https://issues.apache.org/jira/browse/KAFKA-3394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15194157#comment-15194157 ]
Jason Gustafson commented on KAFKA-3394: ---------------------------------------- Yeah, I guess what I was thinking is whether we should keep the current protocol definitions and change the implementation to make sure that we support what is documented (and deal with the consequence of having nulls all over the place). Or if we want to have non-nullable strings, maybe we should update the protocol documentation. As for how we're going to detect other such cases, I don't have any great ideas. I asked [~edenhill] if there were other cases where he depends on null values and the only other case he thought of was message keys and values, which I'm sure we already handle. > Broker fails to parse Null Metadata in OffsetCommit requests > ------------------------------------------------------------ > > Key: KAFKA-3394 > URL: https://issues.apache.org/jira/browse/KAFKA-3394 > Project: Kafka > Issue Type: Bug > Components: core > Affects Versions: 0.10.0.0 > Reporter: Magnus Edenhill > Assignee: Jason Gustafson > Priority: Blocker > Fix For: 0.10.0.0 > > > librdkafka sends a Null Metadata string (size -1) in its OffsetCommitRequests > when there is no metadata, this unfortunately leads to an exception on the > broker that expects a non-null string. > {noformat} > [2016-03-11 11:11:57,623] ERROR Closing socket for > 10.191.0.33:9092-10.191.0.33:56503 because of error (kafka.network.Processor) > kafka.network.InvalidRequestException: Error getting request for apiKey: 8 > and apiVersion: 1 > at > kafka.network.RequestChannel$Request.liftedTree2$1(RequestChannel.scala:91) > at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:88) > at kafka.network.Processor$$anonfun$run$11.apply(SocketServer.scala:426) > at kafka.network.Processor$$anonfun$run$11.apply(SocketServer.scala:421) > at scala.collection.Iterator$class.foreach(Iterator.scala:727) > at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) > at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) > at scala.collection.AbstractIterable.foreach(Iterable.scala:54) > at kafka.network.Processor.run(SocketServer.scala:421) > at java.lang.Thread.run(Thread.java:745) > Caused by: org.apache.kafka.common.protocol.types.SchemaException: Error > reading field 'topics': Error reading field 'partitions': Error reading field > 'metadata': java.lang.NegativeArraySizeException > at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) > at > org.apache.kafka.common.requests.OffsetCommitRequest.parse(OffsetCommitRequest.java:260) > at > org.apache.kafka.common.requests.AbstractRequest.getRequest(AbstractRequest.java:50) > at > kafka.network.RequestChannel$Request.liftedTree2$1(RequestChannel.scala:88) > ... 9 more > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)