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

Andrew Purtell commented on HBASE-1845:
---------------------------------------

I assume that write buffering of single operations will wrap the new multi 
calls. Currently there is a wart with respect to the write buffer.

>From a Trend dev team:

{quote}
When insert rows into one table by calling the method public synchronized void 
put(final Put put), if the column family of one row does not exist, the insert 
operation will failed and throw NoSuchColumnFamilyException.. We observed that 
all the following insert operation will fails even though all of them have 
valid column family. That is one exception of insert operation can cause 
failure of all the following insert operation.
{quote}

Their further analysis explains in detail the scenario, which I will summarize 
here:

1) An invalid put is added to the writeBuffer by put(Put put). It will trigger 
a NoSuchColumnFamilyException once it goes to the region server.

2) At some point, the buffer is flushed.

3) When the invalid put is processed, an exception is thrown. The finally 
clause of flushCommits() removes all successful puts from the writebuffer list 
but the failed put remains at the top.

4) Subsequent puts will add more entries to the write buffer but the first 
entry on the list is invalid so eventually every Put will throw an exception 
once the buffer limit . 

I don't see how the patch on this issue handles this. The invalid entries will 
be retried here over and over as well. 

A workaround with the current write buffering in HTable is for the client to 
call getWriteBuffer() and remove the entry at the head of the list manually. 

> Discussion issue for multi calls, MultiDelete, MultiGet and MultiPut
> --------------------------------------------------------------------
>
>                 Key: HBASE-1845
>                 URL: https://issues.apache.org/jira/browse/HBASE-1845
>             Project: Hadoop HBase
>          Issue Type: New Feature
>            Reporter: Erik Holstad
>             Fix For: 0.21.0
>
>         Attachments: batch.patch, multi-v1.patch
>
>
> I've started to create a general interface for doing these batch/multi calls 
> and would like to get some input and thoughts about how we should handle this 
> and what the protocol should
> look like. 
> First naive patch, coming soon.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to