You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/01/11 16:03:02 UTC

[jira] [Commented] (NIFI-4262) MergeContent - option to add merged uuid in original flow files

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

ASF GitHub Bot commented on NIFI-4262:
--------------------------------------

Github user markap14 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2056#discussion_r160995049
  
    --- Diff: nifi-nar-bundles/nifi-extension-utils/nifi-processor-utils/src/main/java/org/apache/nifi/processor/util/bin/Bin.java ---
    @@ -173,4 +174,19 @@ public long getBinAge() {
             final long ageInNanos = System.nanoTime() - creationMomentEpochNs;
             return TimeUnit.MILLISECONDS.convert(ageInNanos, TimeUnit.NANOSECONDS);
         }
    +
    +    /**
    +     * @return the UUID of the flow file generated by the merge of this bin's content
    +     */
    +    public String getUuid() {
    +        return uuid;
    +    }
    +
    +    /**
    +     * Set the UUID of the flow file generated by the merge of this bin's content
    +     * @param uuid UUID to set
    +     */
    +    public void setUuid(String uuid) {
    --- End diff --
    
    After reviewing this again, I think we've got 2 approaches that I would recommend. My preferred approach would be to update the `boolean processBin(Bin, ProcessContext)` method to return a `BinProcessingResult` object, where `BinProcessingResult` would be a new class that has the boolean of whether or not the bin was committed and also has a Map<String, String> of attributes that should be added to the 'original' FlowFiles. This is more flexible and allows us to make other modifications more cleanly in the future. This is not considered part of our API but rather is just a convenience class, so we can change it in any minor version of NiFi.
    
    The second option would be to keep as-is, but at least just check if the bin uuid is null. If so, just ignore it instead of trying to add it to the FlowFiles. This option, though, I feel is a little less clean and requires that implementations know that this 'magical' UUID exists on the bin. It's also less flexible for future updates.


> MergeContent - option to add merged uuid in original flow files
> ---------------------------------------------------------------
>
>                 Key: NIFI-4262
>                 URL: https://issues.apache.org/jira/browse/NIFI-4262
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>            Reporter: Pierre Villard
>            Assignee: Pierre Villard
>
> With the apparition of Wait/Notify processors it is now possible tackle new challenges when it comes to synchronize the execution of different parts of the workflow.
> The objective here is the following:
> Flow files are sent to a MergeContent processor. Merged flow files are then sent to a processor A while original flow files are sent to a processor B. I want to trigger processor B when and only when processor A has completed.
> To use the Wait/Notify approach, a common attribute must be available to be used as a signal in the distributed cache. This JIRA is about adding a processor property allowing a user to add the UUID of the merged flow file as a new attribute of all the original flow files that are constituting the merged flow file.
> The template attached to NIFI-4028 can be used for this use case. Note that the fix for NIFI-4028 is needed to solve the use case described in this JIRA.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)