NIFI-3553: If IOException is thrown when completing FTP transfer, do not update the FlowFile to point to the content that was streamed but instead leave FlowFile pointing to original version

Signed-off-by: Pierre Villard <pierre.villard.fr@gmail.com>

This closes #1562.
This commit is contained in:
Mark Payne 2017-03-03 13:18:41 -05:00 committed by Pierre Villard
parent 33a702500c
commit 7f5c0dfb54
1 changed files with 3 additions and 3 deletions

View File

@ -239,9 +239,9 @@ public abstract class FetchFileTransfer extends AbstractProcessor {
@Override
public void process(final OutputStream out) throws IOException {
StreamUtils.copy(in, out);
transfer.flush();
}
});
transfer.flush();
transferQueue.offer(new FileTransferIdleWrapper(transfer, System.nanoTime()));
} catch (final FileNotFoundException e) {
getLogger().error("Failed to fetch content for {} from filename {} on remote host {} because the file could not be found on the remote system; routing to {}",
@ -255,14 +255,14 @@ public abstract class FetchFileTransfer extends AbstractProcessor {
session.transfer(session.penalize(flowFile), REL_PERMISSION_DENIED);
session.getProvenanceReporter().route(flowFile, REL_PERMISSION_DENIED);
return;
} catch (final IOException e) {
} catch (final ProcessException | IOException e) {
try {
transfer.close();
} catch (final IOException e1) {
getLogger().warn("Failed to close connection to {}:{} due to {}", new Object[] {host, port, e.toString()}, e);
}
getLogger().error("Failed to fetch content for {} from filename {} on remote host {}:{} due to {}; routing to failure",
getLogger().error("Failed to fetch content for {} from filename {} on remote host {}:{} due to {}; routing to comms.failure",
new Object[] {flowFile, filename, host, port, e.toString()}, e);
session.transfer(session.penalize(flowFile), REL_COMMS_FAILURE);
return;