[
https://issues.apache.org/jira/browse/NIFI-1168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15011567#comment-15011567
]
Aldrin Piri commented on NIFI-1168:
-----------------------------------
Reviewing
> @TriggerWhenEmpty docs and developer guide incompatible onTrigger definitions
> -----------------------------------------------------------------------------
>
> Key: NIFI-1168
> URL: https://issues.apache.org/jira/browse/NIFI-1168
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core Framework, Documentation & Website
> Affects Versions: 0.3.0
> Reporter: Aldrin Piri
> Assignee: Mark Payne
> Fix For: 0.4.0
>
> Attachments:
> 0001-NIFI-1168-Ensure-that-processors-with-only-looping-c.patch
>
>
> The TriggerWhenEmpty javadoc has the following specification for when a
> processor is executed:
> {code}
> /**
> * Marker annotation a {@link org.apache.nifi.processor.Processor Processor}
> * implementation can use to indicate that the Processor should still be
> * triggered even when it has no data in its work queue. By default,
> Processors
> * which have no non-self incoming edges will be triggered even if there is no
> * work in its queue. However, Processors that have non-self incoming edges
> will
> * only be triggered if they have work in their queue or they present this
> * annotation.
> *
> */
> {code}
> The developer guide, however specifies that:
> {quote}
> A Processor’s onTrigger method will be called only when it is scheduled to
> run and when work exists for the Processor. Work is said to exist for a
> Processor if any of the following conditions is met:
> A Connection whose destination is the Processor has at least
> one FlowFile in its queue
> The Processors has no incoming Connections
> The Processor is annotated with the @TriggerWhenEmpty annotation
> {quote}
> The key difference is that TriggerWhenEmpty specifies that if a processor
> only has self-directed incoming edges/loops, it will still be triggered by
> the framework, while the Developer Guide seems to not make such provisions.
> The behavior outlined in the developer guide is currently what is seen and
> this was stumbled upon while reviewing the patches associated with NIFI-1086
> and introduces a unique case in terms of functionality. Given that an
> InvokeHTTP processor can be run with or without inputs, there are certain
> relationships that would never happen (like the retry or failure) when the
> processor is driven only by a trigger event. In this case, loops that were
> instinctually created while making a sample flow to retry requests prevented
> the processor from executing.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)