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

Lars George commented on HBASE-13271:
-------------------------------------

Looking at delete(List<Delete>) now, that does it proper. It is because 
Delete's are immediate, same as Get's. The issue arises due to the client side 
write buffer with put(List<Put>). I propose for just that function we do 
exactly what delete(List) does, as put(List) also is flushing the buffer at the 
end of the list as it is implemented now (API in 1.0.0). That keep both the 
same, *and* keeps put(List) away from flushing the local write buffer. 

In fact, it needs to be checked, maybe the entire local write buffer can be 
removed as you either get an explicit one (BufferedMutator) or expect Table to 
flush immediately anyways. Are we keeping this just for HTable users? It is 
deprecated, so when we drop it, we could then at least remove the entire crud?

> 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