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

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

Github user asfgit closed the pull request at:

    https://github.com/apache/nifi/pull/601


> Provide ability to get InputStream from FlowFile without using Process 
> Session callback
> ---------------------------------------------------------------------------------------
>
>                 Key: NIFI-2039
>                 URL: https://issues.apache.org/jira/browse/NIFI-2039
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>             Fix For: 1.0.0
>
>
> Provide a mechanism to obtain an InputStream for a FlowFile directly from the 
> ProcessSession without having to provide an InputStreamCallback.
> Currently, we often have processors that create an AtomicReference so that 
> the value can be set within a callback and then the value must be obtained 
> using a get() once the callback returns. This is very un-intuitive. 
> Additionally, we don't have the ability to return an InputStream to other 
> code that may required to run in a callback. For instance, when using 
> Calcite, Calcite wants a callback, essentially, that provides an Enumerator 
> of data. We can't currently support this well because we can't create an 
> InputStream and return it.
> We need to add the following method to ProcessSession:
> InputStream read(FlowFile flowFile) throws ProcessException;
> The InputStream that is returned must be tracked by ProcessSession such that 
> when the session is committed or rolled back, the stream is closed if it 
> hasn't been already. All of the logic that currently takes place in 
> ProcessSession.read() after the callback returns must be done on the closing 
> of the new InputStream that is returned.
> The MockProcessSession should throw an Exception if commit() is called 
> without the InputStream being closed, ideally providing the stack trace of 
> where the stream was obtained and where commit() was called. This is to 
> ensure that the developer is being a good consumer, but the 
> StandardProcessSession doesn't really need to do this, as we can simply close 
> the InputStream so that it can no longer be consumed.



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

Reply via email to