kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Rosen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KAFKA-1494) Failed to send messages after 3 tries.
Date Wed, 01 Oct 2014 07:46:34 GMT

    [ https://issues.apache.org/jira/browse/KAFKA-1494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14154518#comment-14154518

Josh Rosen commented on KAFKA-1494:

I'm able to reproduce a similar problem using Kafka 0.8 with a single broker running inside
of Docker (using boot2docker) on OS X.  In this setup, I run a single-node ZooKeeper process
in its own Docker container and configure the Kafka broker to use it.  The broker is configured
to bind to the Docker container's IP on the VirtualBox network.  Using {{sudo route \-n add `boot2docker ip`}}, I've configured my Mac so that programs running outside
of Docker can access network services running inside of containers using the containers' own
IP addresses (so we use the same IPs for host-container and container-container communication).
 I have some Scala code which uses Kafka's ZkUtils to retrieve information on the Kafka cluster
state and kafka.producer.Producer to push data into Kafka.

When I attempt to run this, I see errors very similar to the ones reported in this ticket:

14/10/01 00:22:54 INFO client.ClientUtils$: Fetching metadata from broker id:0,host:,port:12345
with correlation id 11 for 1 topic(s) Set(test-topic)
14/10/01 00:22:54 INFO producer.SyncProducer: Connected to for producing
14/10/01 00:22:54 INFO producer.SyncProducer: Disconnecting from
14/10/01 00:22:54 WARN producer.BrokerPartitionInfo: Error while fetching metadata [{TopicMetadata
for topic test-topic ->
No partition metadata for topic test-topic due to kafka.common.LeaderNotAvailableException}]
for topic [test-topic]: class kafka.common.LeaderNotAvailableException

I've found messages on the mailing list that describe this LeaderNotAvailableException; however,
I don't think that any of the root causes reported there apply in my case:

- My producer can connect to the broker (I know this because I set `client.id` in my producer
configuration and see matching entries in the broker's logs).
- My broker can connect to ZooKeeper (I manually inspected ZooKeeper's contents using zookeeper-shell).
- I didn't attempt to delete any topics.
- ZooKeeper starts with a completely fresh state; leftover state from earlier attempts / experiments
isn't an issue here.
- I don't think there are any race-conditions in my client code; I added long (20-30 second)
Thread.sleep() calls in my program so that we wait for leader election / metadata propagation
to occur after creating the new topic.

I've noticed that ZkUtils.getReplicasForPartition lists the expected replica for the partition,
although ZkUtils.getLeaderForPartition returns None, even after multiple attempts / long delays.

This test is easy for me to re-run; the entire setup / teardown of the containers takes less
than a minute.  Therefore, it's very easy for me to experiment with different configurations
/ settings.  I can provide any logs, configuration files, etc. that would be helpful when
debugging this; just let me know what you need.

> Failed to send messages after 3 tries.
> --------------------------------------
>                 Key: KAFKA-1494
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1494
>             Project: Kafka
>          Issue Type: Bug
>          Components: controller, core
>    Affects Versions:
>         Environment: Mac OS 
>            Reporter: darion yaphets
>            Assignee: Neha Narkhede
> I use default server & zookeeper config to start-up zookeeper server and kafka broker
on my machine to test custom message which based on proto buffer . I write a client to send
protobuf-message to kafka broker and source code as following :
>                 Properties properties = new Properties();
> 		properties.put("serializer.class", "java_example.ProtoBufMessage");
> 		properties.put("metadata.broker.list", "localhost:9092");
> 		ProducerConfig config = new ProducerConfig(properties);
> 		testBuf buffer = testBuf.newBuilder().setID(0)
> 				.setUrl("darion.yaphet.org").build();
> 		Producer<String, testBuf> producer = new Producer<String, testBuf>(
> 				config);
> 		producer.send(new KeyedMessage<String, testBuf>("protobuffer", buffer));
> client debug log report a exception:
> [FileSystemMoniter] INFO [main] kafka.utils.Logging$class.info(68) | Disconnecting from
> [FileSystemMoniter] DEBUG [main] kafka.utils.Logging$class.debug(52) | Successfully fetched
metadata for 1 topic(s) Set(protobuffer)
> [FileSystemMoniter] WARN [main] kafka.utils.Logging$class.warn(83) | Error while fetching
metadata [{TopicMetadata for topic protobuffer -> 
> No partition metadata for topic protobuffer due to kafka.common.LeaderNotAvailableException}]
for topic [protobuffer]: class kafka.common.LeaderNotAvailableException 
> [FileSystemMoniter] ERROR [main] kafka.utils.Logging$class.error(97) | Failed to send
requests for topics protobuffer with correlation ids in [0,8]
> Exception in thread "main" kafka.common.FailedToSendMessageException: Failed to send
messages after 3 tries.
> 	at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90)
> 	at kafka.producer.Producer.send(Producer.scala:76)
> 	at kafka.javaapi.producer.Producer.send(Producer.scala:33)
> 	at java_example.ProducerExamples.main(ProducerExamples.java:26)

This message was sent by Atlassian JIRA

View raw message