Matt Burgess created NIFI-3414:
----------------------------------

             Summary: Implement an EnforceOrder processor
                 Key: NIFI-3414
                 URL: https://issues.apache.org/jira/browse/NIFI-3414
             Project: Apache NiFi
          Issue Type: New Feature
            Reporter: Matt Burgess


For some flows, it is imperative that the flow files are processed in a certain 
order.  The PriorityAttributePrioritizer can be used on a connection to ensure 
that flow files going through that connection are in priority order, but 
depending on error-handling, branching, and other flow designs, it is possible 
for flow files to get out-of-order.

I propose an EnforceOrder processor, which would be single-threaded and have 
(at a minimum) the following properties:

1) Order Attribute: This would be the name of a flow file attribute from which 
the current value will be retrieved.
2) Initial Value: This property specifies an initial value for the order. The 
processor is stateful, however, so this property is only used when there is no 
entry in the state map for current value.

The processor would store the Initial Value into the state map (if no state map 
entry exists), then for each incoming flow file, it checks the value in the 
Order Attribute against the current value.  If the attribute value matches the 
current value, the flow file is transferred to the "success" relationship, and 
the current value is incremented in the state map. If the attribute value does 
not match the current value, the session will be rolled back.

Using this processor, along with a PriorityAttributePrioritizer on the incoming 
connection, will allow for out-of-order flow files to have a sort of "barrier", 
thereby guaranteeing that flow files transferred to the "success" relationship 
are in the specified order.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to