Проблема с KafkaStreams metadataForKey только в конкретном экземпляре

#apache-kafka #apache-kafka-streams

#apache-kafka #apache-kafka-streams

Вопрос:

Мы используем KafkaStreams в наших тестовых экземплярах (ClusterTest) и используем metadataForKey, чтобы получить конкретный экземпляр, в котором ключ находился в нашем хранилище. В тестовых экземплярах это работало нормально. Однако, когда мы перешли в производственные экземпляры (ClusterProd), этот метод начал возвращать значение null, даже несмотря на то, что в хранилище были данные для ключа. Мы смогли подтвердить, что ключ присутствовал в хранилище, так как наши потоковые операции работали нормально. Однако конечная точка, которую мы создали для получения текущего значения по экземплярам, завершается с ошибкой, поскольку она не может получить информацию метаданных.

Мы получаем информацию о метаданных, как показано ниже. Имя хранилища является именем как для тестового, так и для продуктового кластеров: KafkaStreams.metadataForKey(имя_хранения, ключ, новая строка Serializer())

Из журналов сервера я вижу, что свойство application.server было установлено в соответствии с требованиями с соответствующей информацией об экземпляре сервера.

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

ОБНОВЛЕНИЕ: из дополнительных журналов мы обнаружили, что allMetadata возвращает требуемые данные. В нем было 3 записи (мы работаем на 3 экземплярах) и, как и ожидалось, были указаны данные хоста. Есть ли какая-либо причина, по которой это не отображается в опции metadataForKey?

Комментарии:

1. Если allMetadata() вернуть его, но metadataForKey() не возвращает, это звучит как ошибка.

2. Да .. поднял jira здесь: issues.apache.org/jira/plugins/servlet/mobile#issue/KAFKA-10843