Shane Hender created KAFKA-4122: ----------------------------------- Summary: Consumer startup swallows DNS resolution exception and infinitely retries Key: KAFKA-4122 URL: https://issues.apache.org/jira/browse/KAFKA-4122 Project: Kafka Issue Type: Bug Components: clients, consumer, network Affects Versions: 0.9.0.1 Environment: Run from Docker image with following Dockerfile: {code} FROM java:openjdk-8-jre
ENV DEBIAN_FRONTEND noninteractive ENV SCALA_VERSION 2.11 ENV KAFKA_VERSION 0.9.0.1 ENV KAFKA_HOME /opt/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION" # Install Kafka, Zookeeper and other needed things RUN apt-get update && \ apt-get install -y zookeeper wget supervisor dnsutils && \ rm -rf /var/lib/apt/lists/* && \ apt-get clean && \ wget -q http://apache.mirrors.spacedump.net/kafka/"$KAFKA_VERSION"/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz -O /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz && \ tar xfz /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz -C /opt && \ rm /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz {code} Reporter: Shane Hender When a consumer encounters nodes that it can't resolve the IP to, I'd expect it to print an ERROR level msg and bubble up an exception, especially if there are no other nodes available. Following is the stack trace that was hidden under the DEBUG trace level: {code} 18:30:47.070 [Filters-akka.kafka.default-dispatcher-7] DEBUG o.apache.kafka.clients.NetworkClient - Initialize connection to node 0 for sending metadata request 18:30:47.070 [Filters-akka.kafka.default-dispatcher-7] DEBUG o.apache.kafka.clients.NetworkClient - Initiating connection to node 0 at kafka.docker:9092. 18:30:47.071 [Filters-akka.kafka.default-dispatcher-7] DEBUG o.apache.kafka.clients.NetworkClient - Error connecting to node 0 at kafka.docker:9092: java.io.IOException: Can't resolve address: kafka.docker:9092 at org.apache.kafka.common.network.Selector.connect(Selector.java:156) at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:489) at org.apache.kafka.clients.NetworkClient.access$400(NetworkClient.java:47) at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:624) at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:543) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:254) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.clientPoll(ConsumerNetworkClient.java:320) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:213) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:193) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.awaitMetadataUpdate(ConsumerNetworkClient.java:134) at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorKnown(AbstractCoordinator.java:184) at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:886) at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:853) at akka.kafka.internal.ConsumerStageLogic.poll(ConsumerStage.scala:410) at akka.kafka.internal.CommittableConsumerStage$$anon$1.poll(ConsumerStage.scala:166) at akka.kafka.internal.ConsumerStageLogic$$anon$5.onPull(ConsumerStage.scala:360) at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:608) at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:542) at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:471) at akka.stream.impl.fusing.GraphInterpreterShell.receive(ActorGraphInterpreter.scala:414) at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:603) at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:618) at akka.actor.Actor$class.aroundReceive(Actor.scala:484) at akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:529) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) at akka.actor.ActorCell.invoke(ActorCell.scala:495) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) at akka.dispatch.Mailbox.run(Mailbox.scala:224) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.nio.channels.UnresolvedAddressException: null at sun.nio.ch.Net.checkAddress(Net.java:101) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622) at org.apache.kafka.common.network.Selector.connect(Selector.java:153) ... 30 common frames omitted 18:30:47.071 [Filters-akka.kafka.default-dispatcher-7] DEBUG o.apache.kafka.clients.NetworkClient - Give up sending metadata request since no node is available {code} This exception is streamed out repeatedly. -- This message was sent by Atlassian JIRA (v6.3.4#6332)