[ https://issues.apache.org/jira/browse/STORM-969?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14698911#comment-14698911 ]
ASF GitHub Bot commented on STORM-969: -------------------------------------- Github user dossett commented on the pull request: https://github.com/apache/storm/pull/664#issuecomment-131648086 @arunmahadevan Thank you for the feedback! I have added a tick tuple feature to address your first point (I am already using this locally, I forgot to include it in this PR). You are right that I attempt to sync even when the write fails. I agree that this is unlikely to succeed, but it seems worthwhile to try to "save" as many tuples as possible. With this tick tuple change I think the code is very close to your recommendation. If the bolt is in a bad state the tick tuples will periodically try to rotate the file and all errors will be reported up through ```this.collector.reportError(e)``` > HDFS Bolt can end up in an unrecoverable state > ---------------------------------------------- > > Key: STORM-969 > URL: https://issues.apache.org/jira/browse/STORM-969 > Project: Apache Storm > Issue Type: Improvement > Components: storm-hdfs > Reporter: Aaron Dossett > Assignee: Aaron Dossett > > The body of the HDFSBolt.execute() method is essentially one try-catch block. > The catch block reports the error and fails the current tuple. In some > cases the bolt's FSDataOutputStream object (named 'out') is in an > unrecoverable state and no subsequent calls to execute() can succeed. > To produce this scenario: > - process some tuples through HDFS bolt > - put the underlying HDFS system into safemode > - process some more tuples and receive a correct ClosedChannelException > - take the underlying HDFS system out of safemode > - subsequent tuples continue to fail with the same exception > The three fundamental operations that execute takes (writing, sync'ing, > rotating) need to be isolated so that errors from each are specifically > handled. -- This message was sent by Atlassian JIRA (v6.3.4#6332)