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();

Reply via email to