Пользовательские процессоры NiFi с общими ссылками используют самую старую версию - PullRequest
0 голосов
/ 31 октября 2018

Работал с Нифи в течение нескольких месяцев и заметил модель зависимости, которая не имеет смысла, надеюсь, я смогу четко описать ее на случай, если кто-то сможет пролить свет.

Мы создавали прототипы нескольких связанных, но различных пользовательских процессоров, и все эти процессоры используют некоторые общие библиотеки jar.

Например,

Процессоры A и B используют Library1

Процессор A разрабатывается вместе с некоторым кодом из библиотеки Library1, создается библиотека Library1, а затем создается Processor A для тестирования на сервере NiFi, все хорошо

ProcessorB также разрабатывается с использованием некоторого кода в Library1, а Library1 перестраивается перед сборкой ProcessorB в качестве развертываемого nar

Затем при тестировании ProcessorB на сервере NiFi (включая присоединение к процессу для пошагового выполнения) мы обнаруживаем необходимость обновления соответствующего кода в Library1

Но, несмотря на это обновление библиотеки, ProcessorB все еще выполняет старый код Libary. Конкретным примером был цикл for; он по-прежнему инициализирует int i = 1 после того, как я изменил код на int i = 0.

Только после того, как я выполнил очистку / перестройку ВСЕХ процессоров (как A, так и B), ProcessorB начал распознавать обновленный код библиотеки.

Это удивительно, поскольку каждый пакет процессора nar должен иметь свою собственную копию jar библиотеки, но он действует так, как если бы ранняя версия имела прецедент.

Наконец, мой вопрос: это ожидаемое поведение при использовании библиотек с общим кодом между пакетами nar или есть лучший способ их создания? Или мне не хватает мудрости из царства ява / мавен?

NiFi v 1.8, но также испытал это в 1.5

Многие TIA

...