Lukas Kummer created SLING-11041:
------------------------------------

             Summary: CsvPipe: InputStream closed before Iterator is finished
                 Key: SLING-11041
                 URL: https://issues.apache.org/jira/browse/SLING-11041
             Project: Sling
          Issue Type: Bug
          Components: pipes
    Affects Versions: Pipes 4.3.0
            Reporter: Lukas Kummer


When using the 
[CsvPipe|https://sling.apache.org/documentation/bundles/sling-pipes/readers.html#csv-pipe-csv-expr-1]
 and using a remote source for the expr such as:

{code:java}
csv 
https://github.com/apache/sling-org-apache-sling-pipes/blob/5660af99a75f36915bbd5b226c459952cb972f30/src/test/resources/standardTest.csv
  
| echo ${item.apple}
{code}

an Exception will be thrown, that `next()` cannot be called because the stream 
is closed. The reason is, that the AbstractInputStreamPipe is [closing the 
InputStream 
quietly|https://github.com/apache/sling-org-apache-sling-pipes/blob/5660af99a75f36915bbd5b226c459952cb972f30/src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java#L118]
 before the CsvIterator has finished it's task.

One solution could be to delegate the task of closing the InputStream to the 
inherited classes of the Abstract Class (CsvPipe, JsonPipe, RegexPipe). 

Another solution could be to create an AbstractIterator. This iterator could 
also read in the InputStream to a defined size (to limit the used memory) into 
a String. This String can then be used again to create a stream.

This problem mainly affects CsvPipe and RegexPipe for remote connections. It 
does not affect the JsonPipe because the JsonPipe is reading in the full String 
from the InputStream.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to