[ https://issues.apache.org/jira/browse/KAFKA-1238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13894858#comment-13894858 ]
Jay Kreps commented on KAFKA-1238: ---------------------------------- 1. Yeah I have been but due to git accident this ended up on the wrong branch so the tool doesn't work. I figured this was a pretty trivial one. 2. Actually after considering it I think the error code is irrelevant. The logic is "always update the cluster metadata unless doing so would remove all known nodes". For any topic we don't get metadata retry will occur automatically after the backoff. This makes sense as the set of topics may contain multiple new topics, some of these may have metadata and some may not (because creation is in process). So the correct logic is to update with whatever you get, but in the special case where there are no brokers don't update. 3. I would rather have the name be the contract rather than a variable. My rationale is that if we define 300 static variables in the protocol definition it becomes very hard to read (and obviously the protocol can't refer to the request object). > New producer hangs in a loop detecting metadata for auto created topics > ----------------------------------------------------------------------- > > Key: KAFKA-1238 > URL: https://issues.apache.org/jira/browse/KAFKA-1238 > Project: Kafka > Issue Type: Bug > Components: producer > Reporter: Neha Narkhede > Assignee: Jay Kreps > Priority: Critical > Attachments: KAFKA-1238-v1.patch, KAFKA-1238.patch > > > New producer hangs in a loop detecting metadata for auto created topics - > java.lang.IllegalStateException: No known nodes. > at kafka.common.Cluster.nextNode(Cluster.java:97) > at > kafka.clients.producer.internals.Sender.maybeMetadataRequest(Sender.java:154) > at kafka.clients.producer.internals.Sender.run(Sender.java:120) > at kafka.clients.producer.internals.Sender.run(Sender.java:84) > at java.lang.Thread.run(Thread.java:695) > java.lang.IllegalStateException: No known nodes. > at kafka.common.Cluster.nextNode(Cluster.java:97) > at > kafka.clients.producer.internals.Sender.maybeMetadataRequest(Sender.java:154) > at kafka.clients.producer.internals.Sender.run(Sender.java:120) > at kafka.clients.producer.internals.Sender.run(Sender.java:84) > at java.lang.Thread.run(Thread.java:695) > java.lang.IllegalStateException: No known nodes. > at kafka.common.Cluster.nextNode(Cluster.java:97) > at > kafka.clients.producer.internals.Sender.maybeMetadataRequest(Sender.java:154) > at kafka.clients.producer.internals.Sender.run(Sender.java:120) > at kafka.clients.producer.internals.Sender.run(Sender.java:84) > at java.lang.Thread.run(Thread.java:695) > java.lang.IllegalStateException: No known nodes. > at kafka.common.Cluster.nextNode(Cluster.java:97) > at > kafka.clients.producer.internals.Sender.maybeMetadataRequest(Sender.java:154) > at kafka.clients.producer.internals.Sender.run(Sender.java:120) > at kafka.clients.producer.internals.Sender.run(Sender.java:84) > at java.lang.Thread.run(Thread.java:695) > java.lang.IllegalStateException: No known nodes. > at kafka.common.Cluster.nextNode(Cluster.java:97) > at > kafka.clients.producer.internals.Sender.maybeMetadataRequest(Sender.java:154) > at kafka.clients.producer.internals.Sender.run(Sender.java:120) > at kafka.clients.producer.internals.Sender.run(Sender.java:84) > at java.lang.Thread.run(Thread.java:695) > java.lang.IllegalStateException: No known nodes. > at kafka.common.Cluster.nextNode(Cluster.java:97) > at > kafka.clients.producer.internals.Sender.maybeMetadataRequest(Sender.java:154) > at kafka.clients.producer.internals.Sender.run(Sender.java:120) > at kafka.clients.producer.internals.Sender.run(Sender.java:84) > at java.lang.Thread.run(Thread.java:695) > The producer needs to be restarted to start sending data to the auto created > topic -- This message was sent by Atlassian JIRA (v6.1.5#6160)