diff options
author | Dana Powers <dana.powers@rd.io> | 2015-01-14 19:15:54 -0800 |
---|---|---|
committer | Dana Powers <dana.powers@rd.io> | 2015-01-14 19:15:54 -0800 |
commit | 21a5ca834b9e0831b29870b5d099263892f21a7d (patch) | |
tree | 14b58764d5d711360d04606e10cec7dc6d6400af /kafka/client.py | |
parent | 8a5fe3184aa067040433426dd02dc4837c967c2c (diff) | |
download | kafka-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.py | 7 |
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: |