2016-11-10 10 views
1

У меня есть процессор, который, кажется, правильно создает FlowFiles (модифицирован стандартный процессор), но когда он идет на фиксацию() сессии, возникает исключение:Как решить проблему с отказом?

2016-10-11 12: 23: 45,700 ERROR [Timer-Driven Process Thread-6] cscprocessors.files.GetFileData [GetFileData [id = 8f5e644d-591c-4df1-8c79-feea118bd8c0]] Не удалось получить файлы из-за {} org.apache.nifi.processor.exception. FlowFileHandlingException: стандартное преобразование передачиFreeFileRecord не указано

Я предполагаю, что это должно указывать, что для передачи передачи нет связи; тем не менее, есть связь «успех», зарегистрированная во время init(), так же, как это сделал оригинальный процессор, и связь успеха с подключением к другому входу процессора как и должно быть.

Любые предложения по устранению неполадок?

ответ

4

Какие изменения вы внесли в стандартный процессор? Если вы вызываете методы на объекте ProcessSession, убедитесь, что вы сохраняете последнюю «версию» FlowFile, возвращенную из этих вызовов методов, и переносите только последнюю версию на «успех».

Ссылки FlowFile являются неизменяемыми; часто в коде вы увидите начальную ссылку, такую ​​как «flowFile», указывающую на файл входящего потока (например, с session.get()), затем он обновляется по мере того, как файл потока мутируется, например flowFile = session.putAttribute(flowFile, "myAttribute", "myValue").

Также убедитесь, что вы передали или удалили последнюю версию каждого отдельного файла потока (а не различные ссылки на один и тот же файл потока) в какое-либо отношение (даже если это необходимо) Relationship.SELF. Если ваш процессор создает новый файл потока, убедитесь, что новый файл потока передан. Если файл входящего потока больше не нужен, обязательно вызовите на нем session.remove().

В моделях NiFi Developer's Guide есть несколько распространенных шаблонов и дополнительных указаний, включая тестовые шаблоны; ваш аппаратный тест (ы) для этого процессора должен быть способен очистить эту ошибку (утверждая, сколько потоков файлов должно было быть передано на какие отношения во время теста).