[ https://issues.apache.org/jira/browse/KAFKA-3088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15110812#comment-15110812 ]
Ismael Juma edited comment on KAFKA-3088 at 1/21/16 4:20 PM: ------------------------------------------------------------- Since clientId is used in quotas, logging and a few other places, it is a good practice to pass one. There are two possible paths here: 1. Change `null` to an empty String internally and avoid this and other NPEs as the code generally assumes that clientId is not null. 2. Make clientId a required field, return a more meaningful error and add a note to the upgrade notes. Some additional information, the clientId is generated by the Java clients if not provided by the user like the following: * "consumer-" + CONSUMER_CLIENT_ID_SEQUENCE.getAndIncrement() * "producer-" + PRODUCER_CLIENT_ID_SEQUENCE.getAndIncrement(); Also, it's interesting the the old Consumer used the following regex to validate the clientId (while the new clients don't seem to do any validation): "[a-zA-Z0-9\\._\\-]". Thoughts [~ewencp] [~guozhang]? was (Author: ijuma): Since clientId is used in quotas, logging and a few other places, it is a good practice to pass one. There are two possible paths here: 1. Change `null` to an empty String internally and avoid this and other NPEs as the code generally assumes that clientId is not null. 2. Make clientId a required field, throw a more meaningful error and add a note to the upgrade notes. Some additional information, the clientId is generated by the Java clients if not provided by the user like the following: * "consumer-" + CONSUMER_CLIENT_ID_SEQUENCE.getAndIncrement() * "producer-" + PRODUCER_CLIENT_ID_SEQUENCE.getAndIncrement(); Also, it's interesting the the old Consumer used the following regex to validate the clientId (while the new clients don't seem to do any validation): "[a-zA-Z0-9\\._\\-]". Thoughts [~ewencp] [~guozhang]? > 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)