[ 
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

Reply via email to