[
https://issues.apache.org/jira/browse/KAFKA-3088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15110952#comment-15110952
]
Guozhang Wang commented on KAFKA-3088:
--------------------------------------
Right now the client-id is guaranteed not-null at the client side (producer /
consumer will throw exceptions, streams will set a default clientid, etc), so
the server does not check this. Using an empty string to replace null at the
request protocol layer has a risk that multiple clients will be treated as one
to the server ("" is treated as a valid string today), so going with option 1
we need to also add a check on the server side with empty string to reject the
request.
> 0.9.0.0 broker crash on receipt of produce request with empty client ID
> -----------------------------------------------------------------------
>
> Key: KAFKA-3088
> URL: https://issues.apache.org/jira/browse/KAFKA-3088
> Project: Kafka
> Issue Type: Bug
> Components: producer
> Affects Versions: 0.9.0.0
> Reporter: Dave Peterson
> Assignee: Jun Rao
>
> Sending a produce request with an empty client ID to a 0.9.0.0 broker causes
> the broker to crash as shown below. More details can be found in the
> following email thread:
> http://mail-archives.apache.org/mod_mbox/kafka-users/201601.mbox/%[email protected]%3e
> [2016-01-10 23:03:44,957] ERROR [KafkaApi-3] error when handling request
> Name: ProducerRequest; Version: 0; CorrelationId: 1; ClientId: null;
> RequiredAcks: 1; AckTimeoutMs: 10000 ms; TopicAndPartition: [topic_1,3] -> 37
> (kafka.server.KafkaApis)
> java.lang.NullPointerException
> at
> org.apache.kafka.common.metrics.JmxReporter.getMBeanName(JmxReporter.java:127)
> at
> org.apache.kafka.common.metrics.JmxReporter.addAttribute(JmxReporter.java:106)
> at
> org.apache.kafka.common.metrics.JmxReporter.metricChange(JmxReporter.java:76)
> at
> org.apache.kafka.common.metrics.Metrics.registerMetric(Metrics.java:288)
> at org.apache.kafka.common.metrics.Sensor.add(Sensor.java:177)
> at org.apache.kafka.common.metrics.Sensor.add(Sensor.java:162)
> at
> kafka.server.ClientQuotaManager.getOrCreateQuotaSensors(ClientQuotaManager.scala:209)
> at
> kafka.server.ClientQuotaManager.recordAndMaybeThrottle(ClientQuotaManager.scala:111)
> at
> kafka.server.KafkaApis.kafka$server$KafkaApis$$sendResponseCallback$2(KafkaApis.scala:353)
> at
> kafka.server.KafkaApis$$anonfun$handleProducerRequest$1.apply(KafkaApis.scala:371)
> at
> kafka.server.KafkaApis$$anonfun$handleProducerRequest$1.apply(KafkaApis.scala:371)
> at
> kafka.server.ReplicaManager.appendMessages(ReplicaManager.scala:348)
> at kafka.server.KafkaApis.handleProducerRequest(KafkaApis.scala:366)
> at kafka.server.KafkaApis.handle(KafkaApis.scala:68)
> at
> kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60)
> at java.lang.Thread.run(Thread.java:745)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)