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.


---

Reply via email to