Repository: nifi Updated Branches: refs/heads/master d1d053725 -> 78020825e
NIFI-2841 Refactoring logic in SplitAvro RecordSplitter to avoid making two calls in a row to reader.hasNext() This closes #1088 Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/78020825 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/78020825 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/78020825 Branch: refs/heads/master Commit: 78020825e9edfee1842e3d642ef762e5be1ab4bd Parents: d1d0537 Author: Bryan Bende <[email protected]> Authored: Thu Sep 29 13:49:27 2016 -0400 Committer: Oleg Zhurakousky <[email protected]> Committed: Tue Nov 8 13:50:42 2016 -0500 ---------------------------------------------------------------------- .../main/java/org/apache/nifi/processors/avro/SplitAvro.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/78020825/nifi-nar-bundles/nifi-avro-bundle/nifi-avro-processors/src/main/java/org/apache/nifi/processors/avro/SplitAvro.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-avro-bundle/nifi-avro-processors/src/main/java/org/apache/nifi/processors/avro/SplitAvro.java b/nifi-nar-bundles/nifi-avro-bundle/nifi-avro-processors/src/main/java/org/apache/nifi/processors/avro/SplitAvro.java index e3eb6ec..83964fa 100644 --- a/nifi-nar-bundles/nifi-avro-bundle/nifi-avro-processors/src/main/java/org/apache/nifi/processors/avro/SplitAvro.java +++ b/nifi-nar-bundles/nifi-avro-bundle/nifi-avro-processors/src/main/java/org/apache/nifi/processors/avro/SplitAvro.java @@ -267,7 +267,8 @@ public class SplitAvro extends AbstractProcessor { } // while records are left, start a new split by spawning a FlowFile - while (reader.hasNext()) { + final AtomicReference<Boolean> hasNextHolder = new AtomicReference<Boolean>(reader.hasNext()); + while (hasNextHolder.get()) { FlowFile childFlowFile = session.create(originalFlowFile); childFlowFile = session.write(childFlowFile, new OutputStreamCallback() { @Override @@ -277,11 +278,13 @@ public class SplitAvro extends AbstractProcessor { // append to the current FlowFile until no more records, or splitSize is reached int recordCount = 0; - while (reader.hasNext() && recordCount < splitSize) { + while (hasNextHolder.get() && recordCount < splitSize) { recordHolder.set(reader.next(recordHolder.get())); splitWriter.write(recordHolder.get()); recordCount++; + hasNextHolder.set(reader.hasNext()); } + splitWriter.flush(); } finally { splitWriter.close();
