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

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

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

    https://github.com/apache/nifi/pull/439#discussion_r63425823
  
    --- Diff: 
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/repository/TestStandardProcessSession.java
 ---
    @@ -323,6 +327,37 @@ public void process(final OutputStream outputStream) 
throws IOException {
             assertDisabled(outputStreamHolder.get());
         }
     
    +    @Test(expected=ProcessException.class)
    +    public void testExportTo() throws IOException {
    +        final ContentClaim claim = contentRepo.create(false);
    +        final FlowFileRecord flowFileRecord = new 
StandardFlowFileRecord.Builder()
    +            .contentClaim(claim)
    +            .addAttribute("uuid", "12345678-1234-1234-1234-123456789012")
    +            .entryDate(System.currentTimeMillis())
    +            .build();
    +        flowFileQueue.put(flowFileRecord);
    +        FlowFile flowFile = session.get();
    +        assertNotNull(flowFile);
    +
    +        flowFile = session.append(flowFile, new OutputStreamCallback() {
    +            @Override
    +            public void process(OutputStream out) throws IOException {
    +                out.write("Hello World".getBytes());
    +            }
    +        });
    +
    +        // should be OK
    +        ByteArrayOutputStream os = new ByteArrayOutputStream();
    +        session.exportTo(flowFile, os);
    +        assertEquals("Hello World", new String(os.toByteArray()));
    +        os.close();
    +
    +        // should throw ProcessException because of IOException (from 
processor code)
    +        FileOutputStream mock = Mockito.mock(FileOutputStream.class);
    +        doThrow(new IOException()).when(mock).write((byte[]) notNull(), 
any(Integer.class), any(Integer.class));
    +        session.exportTo(flowFile, mock);
    --- End diff --
    
    I would recommend wrapping this call in a try/catch and ensuring that 
ProcessException is thrown here. Indicating that it is expected in the @Test 
annotation can be somewhat error-prone, as several other method calls within 
this method could actually throw ProcessException


> Exception thrown by StandardProcessSession.exportTo implies issues reading 
> from repository
> ------------------------------------------------------------------------------------------
>
>                 Key: NIFI-1866
>                 URL: https://issues.apache.org/jira/browse/NIFI-1866
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>             Fix For: 0.7.0
>
>
> When calling ProcessSession.exportTo, if unable to write to the OutputStream 
> provided, we end up with a FlowFileAccessException, rather than IOException. 
> This implies that we were unable to access the ContentRepository, but this is 
> not accurate. We need to ensure that we throw the appropriate Exception here 
> so that Processors that cause ProcessException are able to handle the 
> Exception properly
> 23:23:03,338 ERROR Timer-Driven Process Thread-3 
> standard.HandleHttpResponse:306 - 
> org.apache.nifi.processor.exception.FlowFileAccessException: Failed to export 
> StandardFlowFileRecord[uuid=366b3598-a1f7-446e-83b6-9d0404532691,claim=StandardContentClaim
>  [resourceClaim=StandardResourceClaim[id=1462828983178-2, container=default, 
> section=2], offset=49798, 
> length=51200000],offset=0,name=1095188501442536,size=51200000] to 
> HttpOutput@1eb25c5d{OPEN} due to org.eclipse.jetty.io.EofException
>     at 
> org.apache.nifi.controller.repository.StandardProcessSession.exportTo(StandardProcessSession.java:2322)
>     at 
> org.apache.nifi.processors.standard.HandleHttpResponse.onTrigger(HandleHttpResponse.java:166)
>     at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)



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

Reply via email to