[
https://issues.apache.org/jira/browse/HBASE-13271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14367973#comment-14367973
]
Solomon Duskis commented on HBASE-13271:
----------------------------------------
There shouldn't be a need to flush any buffer in Table. Autoflush should
always be true. The idea is that users who want autoflush=false should use the
new BufferedMutator interface rather than a table.
The problem, it would seem, is that the behavior of
getBufferedMutator().mutate(puts); is indeterminate. We should have more
determinate behavior for exception cases in put(List<Put>).
I personally think that the put(List<Put>) method is useful. There should be
an efficient (and determinate) method of doing a synchronous batch call.
Maybe HTable.put(List<Put>) should use HTable.batch() rather than
BufferedMutator.mutate for the autoflush=true case. If autoflush=false, then
someone must have accessed an HTable class rather than a Table interface, in
which case they have access to the flush() method on HTable, and using a
BufferedMutator should be safe.
> 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)