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

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

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

    https://github.com/apache/nifi/pull/280#discussion_r56327650
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/SplitText.java
 ---
    @@ -143,72 +199,82 @@ protected void init(final 
ProcessorInitializationContext context) {
             return properties;
         }
     
    -    private int readLines(final InputStream in, final int maxNumLines, 
final OutputStream out, final boolean keepAllNewLines) throws IOException {
    +    private int readLines(final InputStream in, final int maxNumLines, 
final long maxByteCount, final OutputStream out) throws IOException {
             int numLines = 0;
    +        long totalBytes = 0L;
             for (int i = 0; i < maxNumLines; i++) {
    -            final long bytes = countBytesToSplitPoint(in, out, 
keepAllNewLines || (i != maxNumLines - 1));
    +            final long bytes = countBytesToSplitPoint(in, out, totalBytes, 
maxByteCount);
    +            totalBytes += bytes;
                 if (bytes <= 0) {
                     return numLines;
                 }
    -
                 numLines++;
    +            if (totalBytes >= maxByteCount && numLines > maxNumLines) {
    --- End diff --
    
    The logic here appears to be incorrect.
    numLines is incremented for each iteration of the loop (unless we return 
before it is incremented).
    This means that numLines <= i
    The loop's condition indicates i < maxNumLines
    So numLines <= i < maxNumLines
    So it is always the case that numLines < maxNumLines, so this condition 
will never be satisfied because numLines will never be > maxNumLines
    
    Now, looking through the code and doing a bit of testing, this does not 
appear to return an incorrect result, since countBytesToSplitPoint will handle 
the logic appropriately itself, but this should be fixed before it is merged.


> Enable SplitText processor to limit line length and filter header lines
> -----------------------------------------------------------------------
>
>                 Key: NIFI-1118
>                 URL: https://issues.apache.org/jira/browse/NIFI-1118
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>            Reporter: Mark Bean
>            Assignee: Joe Skora
>             Fix For: 0.6.0
>
>
> Include the following functionality to the SplitText processor:
> 1) Maximum size limit of the split file(s)
> A new split file will be created if the next line to be added to the current 
> split file exceeds a user-defined maximum file size
> 2) Header line marker
> User-defined character(s) can be used to identify the header line(s) of the 
> data file rather than a predetermined number of lines
> These changes are additions, not a replacement of any property or behavior. 
> In the case of header line marker, the existing property "Header Line Count" 
> must be zero for the new property and behavior to be used.



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

Reply via email to