I’m using this version of kafka:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.9.2</artifactId>
    <version>0.8.1.1</version>
</dependency>

I’m using kafka.server.KafkaServer in memory for some integration tests. I 
start KafkaServer and use AdminUtils.createTopic(ZkClient, String, Integer, 
Integer, Properties) to create a Topic.

I then use the following code to find the leader (adapted from the sample code 
on the SimpleConsumerExample on the Kafka wiki 
https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example).

consumer = new SimpleConsumer(seed.getHostName(), seed.getPort(), getTimeout(), 
getBufferSize(), "leaderLookup");
List<String> topics = Collections.singletonList(getTopic());
TopicMetadataRequest req = new TopicMetadataRequest(topics);
kafka.javaapi.TopicMetadataResponse resp = consumer.send(req);

List<TopicMetadata> metaData = resp.topicsMetadata();
for (TopicMetadata item : metaData) {
    for (PartitionMetadata part : item.partitionsMetadata()) {
        if (part.partitionId() == getPartition()) {
            returnMetaData = part;
            break loop;
        }
    }
}

The problem I have is that item.partitionsMetadata() is always null. So my code 
interprets the situation as that the one broker doesn’t know anything about the 
topic.

Is this a bug in KafkaServer?
I’ve seen a couple bugs that seem potentially related:
https://issues.apache.org/jira/browse/KAFKA-1367

I also ran this search in the Kafka JIRA which returned a lot of results.
https://issues.apache.org/jira/browse/KAFKA-1998?jql=project%20%3D%20KAFKA%20AND%20text%20~%20%22partition%20metadata%22<https://issues.apache.org/jira/browse/KAFKA-1998?jql=project%20=%20KAFKA%20AND%20text%20~%20"partition%20metadata";>

Can anyone shed some light on this for me?

After starting KafkaServer how can I tell whether or not the broker is handling 
a given partition for a given topic?

Thanks.

Reply via email to