From 1149bc61cb3390210be4566dafba80564c4ab8d9 Mon Sep 17 00:00:00 2001 From: Mark Payne Date: Mon, 29 Feb 2016 10:43:27 -0500 Subject: [PATCH] NIFI-1572: Ensure that if an Exception is thrown when processing a bin, all sessions involved are rolled back or otherwise accounted for --- .../java/org/apache/nifi/processor/util/bin/BinFiles.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/bin/BinFiles.java b/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/bin/BinFiles.java index 62e5655a23..7c9034278b 100644 --- a/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/bin/BinFiles.java +++ b/nifi-commons/nifi-processor-utilities/src/main/java/org/apache/nifi/processor/util/bin/BinFiles.java @@ -230,6 +230,14 @@ public abstract class BinFiles extends AbstractSessionFactoryProcessor { } session.rollback(); return 1; + } catch (final Exception e) { + logger.error("Failed to process bundle of {} files due to {}; rolling back sessions", new Object[] {binCopy.size(), e}); + + for (final FlowFileSessionWrapper wrapper : binCopy) { + wrapper.getSession().rollback(); + } + session.rollback(); + return 1; } // we first commit the bundle's session before the originals' sessions because if we are restarted or crash