[ https://issues.apache.org/jira/browse/KAFKA-1998?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Guozhang Wang resolved KAFKA-1998. ---------------------------------- Resolution: Not a Problem > Partitions Missing From MetadataResponse > ---------------------------------------- > > Key: KAFKA-1998 > URL: https://issues.apache.org/jira/browse/KAFKA-1998 > Project: Kafka > Issue Type: Bug > Components: core > Affects Versions: 0.8.2.0 > Reporter: Evan Huus > Assignee: Mayuresh Gharat > > It is known behaviour that when a partition is entirely offline (it has no > leader because all of its replicas are down) then that partition will not be > included in the metadata returned by other brokers. For example, if topic > "foo" has 3 partitions, but all replicas of partition 3 are offline, then > requesting metadata for "foo" will only return information about partitions 1 > and 2. > This means that there is no way to reliably determine the number of > partitions for a topic via kafka's metadata API; if I receive information on > partitions 1 and 2, I don't know if partition 3 is offline or if it is simply > that there are only two partitions total. (You can presumably still ask > zookeeper directly, but that is a work-around). > This ambiguity, in turn, can lead to a consistency problem with the default > partitioner, since that effectively implements `hash(key) mod #partitions`. > If a partition goes offline and is removed from the metadata response, then > the number of partitions the producer knows about will change (on its next > metadata refresh) and the mapping from keys to partitions will also change. > Instead of distributing messages among (for example) 3 partitions, and > failing to produce to the offline partition, it will distribute *all* > messages among the two online partitions. This results in messages being sent > to the wrong partition. > Since kafka already returns partitions with error messages in many cases > (e.g. `LeaderNotAvailable`) I think it makes much more sense and fixes the > above partition problem if it would simply return offline partitions as well > with the appropriate error (whether that is `LeaderNotAvailable` or it would > be better to add an additional error is up to you). > CC [~guozhang] > (This issue was originally described/discussed on the kafka-users mailing > list, in the thread involving > https://mail-archives.apache.org/mod_mbox/kafka-users/201503.mbox/%3CCAA4pprAZvp2XhdNmy0%2BqVZ1UVdVxmUfz3DDArhGbwP-iiH%2BGyg%40mail.gmail.com%3E) > If there are any questions I am happy to clarify, I realize the scenario is > somewhat complex. -- This message was sent by Atlassian JIRA (v6.3.4#6332)