[
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