From 8303780259375374b6be6c4b1813d077f5a99d7a Mon Sep 17 00:00:00 2001 From: Dana Powers Date: Sun, 13 Mar 2016 23:49:55 -0700 Subject: Check for None returned from least_loaded_node when no brokers are available --- kafka/client_async.py | 4 ++++ kafka/coordinator/consumer.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/kafka/client_async.py b/kafka/client_async.py index 973ece0..57aea66 100644 --- a/kafka/client_async.py +++ b/kafka/client_async.py @@ -532,6 +532,8 @@ class KafkaClient(object): return 9999999999 node_id = self.least_loaded_node() + if node_id is None: + return 0 topics = list(self._topics) if self.cluster.need_all_topic_metadata: @@ -588,6 +590,8 @@ class KafkaClient(object): """Attempt to guess the broker version""" if node_id is None: node_id = self.least_loaded_node() + if node_id is None: + raise Errors.NoBrokersAvailable() def connect(node_id): timeout_at = time.time() + timeout diff --git a/kafka/coordinator/consumer.py b/kafka/coordinator/consumer.py index 0e610c7..a5e3067 100644 --- a/kafka/coordinator/consumer.py +++ b/kafka/coordinator/consumer.py @@ -414,6 +414,8 @@ class ConsumerCoordinator(BaseCoordinator): node_id = self.coordinator_id else: node_id = self._client.least_loaded_node() + if node_id is None: + return Future().failure(Errors.NoBrokersAvailable) # create the offset commit request offset_data = collections.defaultdict(dict) @@ -560,6 +562,8 @@ class ConsumerCoordinator(BaseCoordinator): node_id = self.coordinator_id else: node_id = self._client.least_loaded_node() + if node_id is None: + return Future().failure(Errors.NoBrokersAvailable) # Verify node is ready if not self._client.ready(node_id): -- cgit v1.2.1