Hello,

You can't call session.transfer inside the OutputStreamCallback, it
needs to be done after the OutputStreamCallback is complete so that
you are transferring the updated reference to flowFile.

Thanks,

Bryan

On Mon, Oct 26, 2020 at 3:49 PM Greene (US), Geoffrey N
<[email protected]> wrote:
>
> I have  a groovy scripts that I am running inside of a ExecuteGroovyScript 
> processor (nifi v 1.12.0)
>
> I’ve been following the examples at 
> https://community.cloudera.com/t5/Community-Articles/ExecuteScript-Cookbook-part-2/ta-p/249018,
>  and I have something like:
>
>
>
> flowFile = session.get()
>
> if(!flowFile) return
>
> flowFile = session.write(flowFile, {outputStream ->
>
>    … do stuff
>
>     try {
>
>   …
>
>         // do thing that throws
>
>         …
>
>         outputStream.write(responseBytes)
>
>         session.transfer(flowFile, REL_SUCCESS)
>
>     }
>
>           catch {
>
>                // the below line ALWAYS throws
>
>               session.transfer(flowFile, REL_FAILURE)
>
>           } as OutputStreamCallback)
>
>
>
> But it throws an error at the session.transfer line.
>
>
>
> ExecuteGroovyScript[id=b3951944-10f5-1175-dfa8-3c9d28fe448e] 
> java.lang.IllegalStateException: 
> StandardFlowFileRecord[uuid=beef7ed3-1822-420d-839c-1c07b4f2d1c5,claim=StandardContentClaim
>  [resourceClaim=StandardResourceClaim[id=1603715925064-433, 
> container=default, section=433], offset=3086, 
> length=11],offset=0,name=6d7ccd7a-13be-43e1-b29b-0431bfaacec3,size=11] 
> already in use for an active callback or an OutputStream created by 
> ProcessSession.write(FlowFile) has not been closed: 
> java.lang.IllegalStateException: 
> StandardFlowFileRecord[uuid=beef7ed3-1822-420d-839c-1c07b4f2d1c5,claim=StandardContentClaim
>  [resourceClaim=StandardResourceClaim[id=1603715925064-433, 
> container=default, section=433], offset=3086, 
> length=11],offset=0,name=6d7ccd7a-13be-43e1-b29b-0431bfaacec3,size=11] 
> already in use for an active callback or an OutputStream created by 
> ProcessSession.write(FlowFile) has not been closed
>
>
>
> I’ve tried throwing around outputStream.close() everwhere, but that doesn’t 
> seem to help.
>
>
>
> What am I missing?
>
>
>
> Thx
>
>
>
>
>
> Geoffrey Greene
>
> Senior Software Ninjaneer
>
> (703) 414 2421
>
> The Boeing Company
>
>

Reply via email to