Последний релиз 2021: новинки Apache NiFi 1.15.2

Автор Категория ,
Последний релиз 2021: новинки Apache NiFi 1.15.2

Всего через 1,5 месяца после выпуска версии 1.15.0, 22 декабря 2021 года вышел очередной релиз Apache NiFi. Разбираем главные новинки и исправленные баги, а также смотрим, как команда разработчиков решила избавиться от уязвимости Log4Shell.

Не только Log4j: еще 3 исправленных ошибки

Декабрьский релиз Apache NiFi не может похвастаться внушительным списков новых фич и существенных дополнений. Однако, есть повод обновиться до 1.15.2, который включает 4 исправленных ошибки и 3 улучшения.

В частности, исправлены периодические сбои BulletinMergerTest при проверке наличия экземпляра BulletinEntity, содержащего то же сообщение, что и более ранний экземпляр. Метод createBulletin вызывает new Date(), чтобы установить метку времени – свойство timestamp для тестовых объектов Bulletin, которые дают разные результаты в зависимости от скорости выполнения. Это может привести к ошибкам теста, когда BulletinMerger сравнивает экземпляры с тем же сообщением и эквивалентными значениями метки времени.

Также устранена потенциальную уязвимость в нестандартных конфигурациях ведения журнала с помощью возможностей поиска по карте контекста потока, описанных в CVE-2021-45105 за счет новой версии библиотеки Log4j 2.17.0, которая ранее была подвержена критической уязвимости CVE-2021-44228. Хотя NiFi не использует Log4j 2 для логирования, обновление библиотеки до версии 2.17.0 позволит избежать потенциальных ссылок на более старые версии во внешних компонентах.

Исправлена ошибка с процессором FetchSFTP, который порождает несколько потоков проверки активности при неудачных соединениях. Процессор FetchSFTP полагается на общий класс SFTPTransfer для обработки связи SFTP с использованием библиотеки SSHJ, начиная с NiFi 1.12.0. Класс SFTPTransfer создает и настраивает SSHClient на основе свойств процессора, вызывая метод подключения после начальной настройки. Метод SSHClient.connect может вызвать исключение ввода-вывода IOException при невозможности доступа к удаленному серверу SFTP, но класс NiFi SFTPTransfer не закрывается в SSHClient. Хотя FetchSFTP перехватывает исключение IOException в родительском методе FetchFileTransfer.onTrigger, процессор не закрывает отказавший SSHClient, поскольку SFTPTransfer не назначал переменную экземпляра. В новой версии NiFi жизненный цикл SSHClient внутри SFTPTransfer скорректирован, чтобы гарантировать закрытие SSHClient и связанного с ним потока поддержки активности.

Ранее в Apache NiFi при обновлении до SSHJ 0.32 возникала проблема переименования SFTP в семействе AWS SFTP Transfer. Например, есть процесс NIFI, который использует процессор SFTP для передачи файлов на сервер SFTP семейства AWS Transfer. На этом процессоре включена опция точечного переименования файлов (dot file rename). Это работало в NIFI 1.14.0, а после обновления до 1.15.1 выдавало сбой с таймаутом чтения. При отключении опции точечного переименования на процессоре SFTP, все работало корректно. Эта проблема с базовым SSHJ 0.32, который включает поддержку флагов переименования SFTP как функцию SFTP V5+. Но SSHJ поддерживает максимальную версию 3, поэтому все пакеты переименования содержат в конце ложный uint32, который может вызывать проблемы в зависимости от того, как сервер обрабатывает плохо сформированный или неожиданный контент в пакетах V3. В Apache NiFi 1.15.2 этот баг исправлен.

3 улучшения Apache NiFi 1.15.2

В улучшениях тоже не обошлось без Log4j. Разработчики провели подробную оценку добавления log4j-to-slf4j. Некоторые компоненты расширения включают транзитивные зависимости от Log4j 2. NiFi использует SLF4J API для входа в код приложения и Logback в качестве реализации во время выполнения. Библиотека Log4j 2 поддерживает SLF4J для маршрутизации сообщений во время выполнения, гарантируя, что все сообщения журнала маршрутизируются через SLF4J и Logback, в отличие от возврата к приложению Log4j 2 по умолчанию. Были рассмотрены текущие компоненты расширения, чтобы определить, необходима ли явная зависимость от log4j-to-slf4j для обеспечения правильной обработки журнала времени выполнения для библиотек, которые полагаются на API Log4j 2.

Исключено логирование с использованием общей библиотеки Apache Commons. Несколько модулей фреймворка и расширений включают библиотеку Apache Commons Logging с разными версиями. Текущая стратегия загрузки среды выполнения позволяет избежать использования этих библиотек из-за наличия jcl-over-slf4j в каталоге основной библиотеки. Исключение ссылок на Apache Commons Logging уменьшит размер двоичных артефактов и предотвратит потенциальную путаницу, связанную с поведением во время выполнения.

Пакет Bouncy Castle Crypto обновлен до версии 1.70. Это Java-реализация криптографических алгоритмов организована так, что содержит легкий API, подходящий для использования в любой среде, включая J2ME, с дополнительной инфраструктурой для согласования алгоритмов с платформой JCE. Bouncy Castle 1.70 включает ряд исправлений ошибок и улучшений, в т.ч. обновления обработки OpenPGP. В декабрьском релизе Apache NiFi все ссылки на Bouncy Castle 1.69 обновлены до 1.70.

Apache NiFI для инженеров данных

Код курса
NFED
Ближайшая дата курса
27 января, 2022
Длительность обучения
16 ак.часов
Стоимость обучения
40 000 руб.

Узнайте все подробности администрирования и эксплуатации Apache NiFi для эффективной аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://nifi.apache.org/download.html
  2. https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316020&version=12351132