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

Mariusz Galus commented on SPARK-22255:
---------------------------------------

I would like an answer on why we need to block. I am using the 
RollingFileAppender with Java Piped I/O Stream classes. I am sending Kafka 
records to a PipedOutputStream that is linked to the FileAppender via the 
PipedInputStream.

If I do allow it to block, in my custom case, I end up getting a Broken Pipe 
because my FileOutputStream closes and the InputStream that is read blocked 
throws a IOException for Broken Pipe and then I'll get flooded with Read End 
Dead IOExceptions.


I may be overlooking something critical to the overall implementation, as I am 
just using this small piece in a custom solution.


> SPARK-22255 FileAppender InputStream Read timeout and blocking state
> --------------------------------------------------------------------
>
>                 Key: SPARK-22255
>                 URL: https://issues.apache.org/jira/browse/SPARK-22255
>             Project: Spark
>          Issue Type: Bug
>          Components: Spark Core
>    Affects Versions: 2.2.0
>            Reporter: Mariusz Galus
>            Priority: Minor
>
> The FileAppender logic when reading from InputStream blocks. This can be 
> simply avoided with a InputStream.available() check prior to reading. 
> If this is done, a variable for estimated available bytes needs to be 
> instantiated to use in the conditionals. The conditional for reading from the 
> inputstream and the conditional for appending to the file.
> See: 
> https://github.com/Galus/spark/pull/1/commits/8ee5133c40e3f627ed0ebfb3aa63d5749b5bfdcb



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to