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

Solomon Duskis commented on HBASE-13271:
----------------------------------------

{quote}
But it seems that Lars issue is with autoflush=false?
{quote}

I certainly don't want to put words in lars' mouth, but I think that the case 
at hand is the default autoflush=true.  In the default case, if there's an 
exception in the bufferedMutator.put(puts), then bufferedMutator.flush() method 
is never invoked.  That leaves the possibility of some puts being left over in 
the bufferedMutator's buffer, and the user will have no way of knowing.  After 
that initial exception, there's no good way to clear the buffer.  If one calls 
Table.put(put) after that initial put(puts) failure, there still might be 
remnants of the previous call.  That might cause additional exceptions 
unrelated to the current put(put) operation.  

I probably should add a test case for this scenario...

> Table#puts(List<Put>) operation is indeterminate; remove!
> ---------------------------------------------------------
>
>                 Key: HBASE-13271
>                 URL: https://issues.apache.org/jira/browse/HBASE-13271
>             Project: HBase
>          Issue Type: Improvement
>          Components: API
>    Affects Versions: 1.0.0
>            Reporter: stack
>
> Another API issue found by [~larsgeorge]:
> "Table.put(List<Put) is questionable after the API change."
> {code}
> [Mar-17 9:21 AM] Lars George: Table.put(List<Put>) is weird since you cannot 
> flush partial lists
> [Mar-17 9:21 AM] Lars George: Say out of 5 the third is broken, then the 
> put() call returns with a local exception (say empty Put) and then you have 2 
> that are in the buffer
> [Mar-17 9:21 AM] Lars George: but how to you force commit them?
> [Mar-17 9:22 AM] Lars George: In the past you would call flushCache(), but 
> that is "gone" now
> [Mar-17 9:22 AM] Lars George: and flush() is not available on a Table
> [Mar-17 9:22 AM] Lars George: And you cannot access the underlying 
> BufferedMutation neither
> [Mar-17 9:23 AM] Lars George: You can *only* add more Puts if you can, or 
> call close()
> [Mar-17 9:23 AM] Lars George: that is just weird to explain
> {code}
> So, Table needs to get flush back or we deprecate this method or it flushes 
> immediately and does not return until complete in the implementation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to