summaryrefslogtreecommitdiff
path: root/kafka/consumer/group.py
diff options
context:
space:
mode:
Diffstat (limited to 'kafka/consumer/group.py')
-rw-r--r--kafka/consumer/group.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/kafka/consumer/group.py b/kafka/consumer/group.py
index 0224d16..1c1f1e8 100644
--- a/kafka/consumer/group.py
+++ b/kafka/consumer/group.py
@@ -644,6 +644,11 @@ class KafkaConsumer(six.Iterator):
timeout_ms = min(timeout_ms, self._coordinator.time_to_next_poll())
self._client.poll(timeout_ms=timeout_ms)
+ # after the long poll, we should check whether the group needs to rebalance
+ # prior to returning data so that the group can stabilize faster
+ if self._coordinator.need_rejoin():
+ return {}
+
records, _ = self._fetcher.fetched_records(max_records)
return records
@@ -1055,6 +1060,11 @@ class KafkaConsumer(six.Iterator):
poll_ms = 0
self._client.poll(timeout_ms=poll_ms)
+ # after the long poll, we should check whether the group needs to rebalance
+ # prior to returning data so that the group can stabilize faster
+ if self._coordinator.need_rejoin():
+ continue
+
# We need to make sure we at least keep up with scheduled tasks,
# like heartbeats, auto-commits, and metadata refreshes
timeout_at = self._next_timeout()