pykafka.exceptions.UnknownTopicOrPartition после переназначения раздела темы kafka - PullRequest
0 голосов
/ 20 января 2019

Мы используем генератор синхронизации pykafka с 3 узлами кластера kafka.Мы пытались заменить брокера в кластере, чтобы выполнить некоторые обновления.

Мы провели переназначение разделов этой конкретной темы другим двум брокерам Kafka, когда производитель Kafka уже работал.Переназначение раздела прошло успешно, но мы получили следующую ошибку, когда он пытался установить связь с посредником, который больше не является производителем для этой темы / раздела.

Это продолжается до перезапуска сервера приложений,то есть;объект KafkaClient воссоздается.

Код:

  def send(self, topic_name: str, data, raise_exception=False) -> None:
        """Publishes a message on a topic
        """
        message = self.encode(data)
        topic = self.client.topics[topic_name.encode('utf-8')]
        try:
            with topic.get_sync_producer(linger_ms=0) as producer:
                producer.produce(message)
        except Exception as e:
            monitoring.record_exception()
            logger.exception('Pushing entry to kafka failed for topic: {topic} and message: {message}'.format(
                topic=topic.name,
                message=message
            ))
            if raise_exception:
                raise e

Фактическое поведение:

[WARNING] [2018-12-20 11:13:33,482] [pykafka.producer] [producer.py:520] Produce request for b'test-load-2001'/2 to b'172.16.45.154':9092 failed with error code 3.
[WARNING] [2018-12-20 11:13:33,607] [pykafka.producer] [producer.py:520] Produce request for b'test-load-2001'/2 to b'172.16.45.154':9092 failed with error code 3.
[WARNING] [2018-12-20 11:13:33,778] [pykafka.producer] [producer.py:520] Produce request for b'test-load-2001'/2 to b'172.16.45.154':9092 failed with error code 3.
[WARNING] [2018-12-20 11:13:33,907] [pykafka.producer] [producer.py:520] Produce request for b'test-load-2001'/2 to b'172.16.45.154':9092 failed with error code 3.
[ERROR] [2018-12-20 11:13:34,092] [pykafka.producer] [producer.py:551] Message not delivered!! UnknownTopicOrPartition("Produce request for b'test-load-2001'/2 to b'172.16.45.154':9092 failed with error code 3.",)
[ERROR] [2018-12-20 11:13:34,095] [root] [<console>:8] Failure.
Traceback (most recent call last):
  File "<console>", line 5, in <module>
  File "/usr/local/lib/python3.6/site-packages/pykafka/producer.py", line 413, in produce
    raise exc
pykafka.exceptions.UnknownTopicOrPartition: Produce request for b'test-load-2001'/2 to b'172.16.45.154':9092 failed with error code 3.

Ожидаемое поведение: клиент Kafka должен автоматически восстанавливаться после этих ошибок,обновление метаданных кластера.

...