[ 
https://issues.apache.org/jira/browse/NIFI-190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14702270#comment-14702270
 ] 

Bryan Bende commented on NIFI-190:
----------------------------------

[~markap14] Definitely agree about the Hold processor determining that a 
FlowFile is too old. Joe had that idea in his original processor and was 
planning to keep that approach.

I was mostly worrying about the flip side of things, basically release signals 
getting put in the cache for things that never show up and clear them out. In 
Joe's original processor he handled that at the same time as expiring a held 
FlowFile, by looping through the local map of signals and expiring them as 
necessary.

One approach to avoid this could be to only allow a release signal to be put in 
the cache for something that is already held, meaning the initial hold puts an 
entry in the cache first. Not sure if that is a good idea because it assumes 
the release signal could never be received before the initial hold.

> HoldFile processor
> ------------------
>
>                 Key: NIFI-190
>                 URL: https://issues.apache.org/jira/browse/NIFI-190
>             Project: Apache NiFi
>          Issue Type: New Feature
>          Components: Extensions
>            Reporter: Joseph Gresock
>            Assignee: Bryan Bende
>            Priority: Minor
>         Attachments: HoldFile_example.xml
>
>
> Our team has developed a processor for the following use case:
> * Format A needs to be sent to Endpoint A
> * Format B needs to be sent to Endpoint B, but should not proceed until A has 
> reached Endpoint A.  We most commonly have this restriction when Endpoint B 
> requires some output of Endpoint A.
> The proposed HoldFile processor takes 2 types of flow files as input:
> * Files to be held
> * Signal files that can release corresponding held files, based on the value 
> of a configurable "release" attribute
> Signal files are distinguished from held files by the presence of the 
> "flow.file.release.value" attribute.  The processor is configured with a 
> "Release Signal Attribute".  Held files with this attribute whose value 
> matches a received signal value will be released.
> An example:
> HoldFile is configured with Release Signal Attribute = "myId".  Its 'Hold' 
> relationship routes back onto itself.
> 1. flowFile 1 { myId : "123" } enters HoldFile.  It is routed to the 'Hold' 
> relationship
> 2. flowFile 2 { flow.file.release.value : "123" } enters HoldFile.  flowfile 
> 1 is then routed to 'Release', and flow file 2 is removed from the session.
> Signal flow files will also copy their attributes to matching held files, 
> unless otherwise indicated.  This is what allows the output of Endpoint A to 
> pass to Endpoint B, above.



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

Reply via email to