You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Bharat Viswanadham (JIRA)" <ji...@apache.org> on 2017/04/23 01:13:04 UTC
[jira] [Commented] (KAFKA-4087) DefaultParitioner Implementation
Issue
[ https://issues.apache.org/jira/browse/KAFKA-4087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15980200#comment-15980200 ]
Bharat Viswanadham commented on KAFKA-4087:
-------------------------------------------
This is according to design, when key is not null, to get that record with a key assigned to always one partition, we do this. If we do by considering available no of partitions, the same key might be assigned to different partition.
> DefaultParitioner Implementation Issue
> --------------------------------------
>
> Key: KAFKA-4087
> URL: https://issues.apache.org/jira/browse/KAFKA-4087
> Project: Kafka
> Issue Type: Bug
> Components: producer
> Affects Versions: 0.9.0.1, 0.10.0.1
> Reporter: Bharat Viswanadham
> Assignee: Bharat Viswanadham
> Labels: partitioners, producer
>
> In DefaultPartitioner implementation, when key is null
> if (availablePartitions.size() > 0) {
> int part = Utils.toPositive(nextValue) % availablePartitions.size();
> return availablePartitions.get(part).partition();
> }
> Where as when key is not null
> return Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
> We are returning partition by using total number of partitions.
> Should n't we do the same as by considering only available partitions?
> https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/internals/DefaultPartitioner.java#L67
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)