Sort partitions before calling partitioner (#905)
This commit is contained in:
@@ -14,6 +14,13 @@ class DefaultPartitioner(object):
|
||||
"""
|
||||
@classmethod
|
||||
def __call__(cls, key, all_partitions, available):
|
||||
"""
|
||||
Get the partition corresponding to key
|
||||
:param key: partitioning key
|
||||
:param all_partitions: list of all partitions sorted by partition ID
|
||||
:param available: list of available partitions in no particular order
|
||||
:return: one of the values from all_partitions or available
|
||||
"""
|
||||
if key is None:
|
||||
if available:
|
||||
return random.choice(available)
|
||||
|
@@ -625,7 +625,7 @@ class KafkaProducer(object):
|
||||
assert partition in self._metadata.partitions_for_topic(topic), 'Unrecognized partition'
|
||||
return partition
|
||||
|
||||
all_partitions = list(self._metadata.partitions_for_topic(topic))
|
||||
all_partitions = sorted(self._metadata.partitions_for_topic(topic))
|
||||
available = list(self._metadata.available_partitions_for_topic(topic))
|
||||
return self.config['partitioner'](serialized_key,
|
||||
all_partitions,
|
||||
|
Reference in New Issue
Block a user