Yes, it's not very intuitive. Currently, it is true that we don't have gap in the partition ids. Since we already build the new producer, we probably don't have to patch the old producer.
Thanks, Jun On Thu, Apr 3, 2014 at 9:06 AM, joe smith <[email protected]> wrote: > Hi, > > My apologies - a newbie here. > > In looking at the getPartition() method, I notice the returned value for > keyed message is the "index" of a partition. But when there is no key, > then the value returned is the "id" of a partition. > > case None => > val availablePartitions = > topicPartitionList.filter(_.leaderBrokerIdOpt.isDefined) > if (availablePartitions.isEmpty) > throw new LeaderNotAvailableException("No leader for any > partition in topic " + topic) > val index = Utils.abs(Random.nextInt) % > availablePartitions.size > val partitionId = availablePartitions(index).partitionId > sendPartitionPerTopicCache.put(topic, partitionId) > << partitionId >> > > It probably won't make a difference when there is no gaps in the sequence > of partitions. However, when there is a gap - e.g. some partitions are not > available - then the partition id and index would be different. > > In the partitionAndCollate() method, the semantic seems to be using index > instead of id. > > Thanks
