summaryrefslogtreecommitdiff
path: root/kafka/client.py
diff options
context:
space:
mode:
authorDana Powers <dana.powers@rd.io>2015-01-14 19:15:54 -0800
committerDana Powers <dana.powers@rd.io>2015-01-14 19:15:54 -0800
commit21a5ca834b9e0831b29870b5d099263892f21a7d (patch)
tree14b58764d5d711360d04606e10cec7dc6d6400af /kafka/client.py
parent8a5fe3184aa067040433426dd02dc4837c967c2c (diff)
downloadkafka-python-21a5ca834b9e0831b29870b5d099263892f21a7d.tar.gz
Catch ReplicaNotAvailableError in MetadataResponse -- per kafka-devs, this error can and should be ignored
Diffstat (limited to 'kafka/client.py')
-rw-r--r--kafka/client.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/kafka/client.py b/kafka/client.py
index bc3d853..7a0cf18 100644
--- a/kafka/client.py
+++ b/kafka/client.py
@@ -11,7 +11,7 @@ from kafka.common import (TopicAndPartition, BrokerMetadata,
ConnectionError, FailedPayloadsError,
KafkaTimeoutError, KafkaUnavailableError,
LeaderNotAvailableError, UnknownTopicOrPartitionError,
- NotLeaderForPartitionError)
+ NotLeaderForPartitionError, ReplicaNotAvailableError)
from kafka.conn import collect_hosts, KafkaConnection, DEFAULT_SOCKET_TIMEOUT_SECONDS
from kafka.protocol import KafkaProtocol
@@ -350,6 +350,11 @@ class KafkaClient(object):
log.error('No leader for topic %s partition %d', topic, partition)
self.topics_to_brokers[topic_part] = None
continue
+ # If one of the replicas is unavailable -- ignore
+ # this error code is provided for admin purposes only
+ # we never talk to replicas, only the leader
+ except ReplicaNotAvailableError:
+ log.warning('Some (non-leader) replicas not available for topic %s partition %d', topic, partition)
# If Known Broker, topic_partition -> BrokerMetadata
if leader in self.brokers: