@@ -52,14 +52,22 @@ def _get_conn_for_broker(self, broker):
52
52
return self .conns [(broker .host , broker .port )]
53
53
54
54
def _get_leader_for_partition (self , topic , partition ):
55
+ """
56
+ Returns the leader for a partition or None if the partition exists
57
+ but has no leader.
58
+
59
+ PartitionUnavailableError will be raised if the topic or partition
60
+ is not part of the metadata.
61
+ """
62
+
55
63
key = TopicAndPartition (topic , partition )
56
64
# reload metadata whether the partition is not available
57
- # or has not leader (broker is None)
65
+ # or has no leader (broker is None)
58
66
if self .topics_to_brokers .get (key ) is None :
59
67
self .load_metadata_for_topics (topic )
60
68
61
69
if key not in self .topics_to_brokers :
62
- raise PartitionUnavailableError ("No leader for %s " % str (key ))
70
+ raise PartitionUnavailableError ("%s not available " % str (key ))
63
71
64
72
return self .topics_to_brokers [key ]
65
73
@@ -115,8 +123,9 @@ def _send_broker_aware_request(self, payloads, encoder_fn, decoder_fn):
115
123
for payload in payloads :
116
124
leader = self ._get_leader_for_partition (payload .topic ,
117
125
payload .partition )
118
- if leader == - 1 :
119
- raise PartitionUnavailableError ("Leader is unassigned for %s-%s" % payload .topic , payload .partition )
126
+ if leader is None :
127
+ raise PartitionUnavailableError (
128
+ "No leader for topic %s partition %s" % (payload .topic , payload .partition ))
120
129
payloads_by_broker [leader ].append (payload )
121
130
original_keys .append ((payload .topic , payload .partition ))
122
131
@@ -249,7 +258,7 @@ def load_metadata_for_topics(self, *topics):
249
258
self .topic_partitions [topic ].append (partition )
250
259
topic_part = TopicAndPartition (topic , partition )
251
260
if meta .leader == - 1 :
252
- log .info ('No leader for topic %s partition %d ' , topic , partition )
261
+ log .info ('No leader for topic %s partition %s ' , topic , partition )
253
262
self .topics_to_brokers [topic_part ] = None
254
263
else :
255
264
self .topics_to_brokers [topic_part ] = brokers [meta .leader ]
0 commit comments