[ 
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/%3c5693ecd9.4050...@dspeterson.com%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)

Reply via email to