Guozhang, Actually, we always return all partitions in the metadata response whether the leaders are available or not.
Thanks, Jun On Sat, Feb 28, 2015 at 10:46 PM, Guozhang Wang <wangg...@gmail.com> wrote: > Hi Honghai, > > 1. If a partition has no leader (i.e. all of its replicas are down) it will > become offline, and hence the metadata response will not have this > partition's info. > > 2. Any of the brokers cache metadata and hence can handle the metadata > request. It's just that their cache are updated asynchronously and hence > when there is a update to the metadata, some brokers may got the new > metadata value a bit eariler than others. > > On Thu, Feb 26, 2015 at 7:21 PM, ChenHongHai <waldenchenka...@outlook.com> > wrote: > > > We have one topic with 4 partitions, but sometimes only get metadata of 2 > > partitions, did anyone meet this kind of situation before?If some > partition > > has no leader at that moment, will it cause this problem? How to make > > some partition has no leader?If 6 brokers has some partitions of the > topic, > > will they return same result? Do I need try all of them and merge the > > result? > > > > SimpleConsumer consumer = consumerPool.getConsumer(seed.host, > > seed.port, connectionTimeOut, consumerBufferSize, > "refreshPartitionMeta"); > > List<String> topics = new ArrayList<String>() {{ > > add(topic); }}; TopicMetadataResponse > > resp = consumer.send(new TopicMetadataRequest(topics)); > > List<TopicMetadata> metaData = resp.topicsMetadata(); > > for (TopicMetadata item : metaData) { > > if(item.errorCode() != kafka.common.ErrorMapping.NoError()) > > LOG.error(String.format("Something wrong with topic metadata for > > topic: %s error code: %d ", item.topic(), item.errorCode() )); > > for (PartitionMetadata part : item.partitionsMetadata()) { > > partitionMeta.put(part.partitionId(), part); > > } } > > > > > > > -- > -- Guozhang >