Bryan Beaudreault created HBASE-28000:
-----------------------------------------

             Summary: Empty Increments in batch calls are too expensive
                 Key: HBASE-28000
                 URL: https://issues.apache.org/jira/browse/HBASE-28000
             Project: HBase
          Issue Type: Bug
            Reporter: Bryan Beaudreault


When an Increment is submitted via table.increment, we have a check which 
throws an exception if the Increment is empty. There is no such check when 
Increment is submitted through table.batch().

When this Increment makes its way to the server, it makes it all the way down 
past taking a row lock before the first check as to whether the Increment has 
any columns in it. Finally when we go to fetch the current cells from the table 
for atomic update, the fact that getFamilyMap() is empty starts to matter. Even 
still, beyond that I think we might still end up writing a somewhat useless 
WALEdit.

The big issue here is the row lock, as this causes contention under certain 
hotspot access patterns which greatly exacerbate the hotspot.

On the server side, we should check for whether the Increment is empty before 
even attempting to serve it. On the client side, we should probably also 
iterate the batch and check for emptiness.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to