У меня есть 3-узловый кластер kafka, внезапно один из узлов в кластере вышел из строя, и я начал видеть исключение NotLeaderForPartitionException
в журналах приложений при отправке сообщения в одну из тем, однако для некоторых тем я могу публиковать и принимать сообщения.
Я мог видеть, что эта проблема сохраняется до тех пор, пока все серверы kafka не будут перезапущены, после перезапуска все в порядке.
Теперь мой вопрос: почему бы и нет новый лидер не избран по этим темам, но продолжает выбрасывать одно и то же исключение NotLeaderForPartitionException
, и как добиться избрания нового лидера по этим темам?
Трассировка исключений:
2020-04-11 22:05:21,747 ERROR [pool-15-thread-297] [KafkaMessageProducer:92] Message send failed:
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:94)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:64)
at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:29)