[ https://issues.apache.org/jira/browse/HBASE-3974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13047773#comment-13047773 ]
Dave Latham commented on HBASE-3974: ------------------------------------ Thanks for taking on this issue, Nicolas. I think it's good to change the default behavior for a synchronous Put to not hang around in the write buffer. However, I also think the default behavior for when a client calls flushCommits should be that the buffered commits are successfully committed, or an exception is thrown. What do you think about using a separate setClearBufferOnFail method rather than overloading setAutoFlush? > Client: Ability to Discard Bad HTable Puts > ------------------------------------------ > > Key: HBASE-3974 > URL: https://issues.apache.org/jira/browse/HBASE-3974 > Project: HBase > Issue Type: Bug > Components: client > Affects Versions: 0.89.20100924, 0.90.3, 0.92.0 > Reporter: Nicolas Spiegelberg > Assignee: Nicolas Spiegelberg > Priority: Critical > Fix For: 0.90.4, 0.92.0 > > Attachments: HBASE-3974.patch > > > While debugging an application consistency issue, we noticed that a single, > synchronous Put request threw a NoServerForRegionException but eventually > succeeded 90 seconds later. The problem is that failed put requests are not > actually removed from the HTable's writeBuffer. This makes sense for > asynchronous puts using setAutoFlush(false) but don't make sense for the > default case where we expect synchronous operation. We should discard all > failed puts for the synchronous case and provide an API so asynchronous > requests can have their failed puts cleared. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira