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

Xu Cang commented on HBASE-22274:
---------------------------------

The test #testCheckAndDeleteWithCompareOp is flaky. It fails at different 
places at different time.

I put a debug log below. And I can see when it fails, the cell value is NULL. 

Meaning the previous *'table.put'* did not put data or did not finish flush the 
data before the check happens next line. And I checked in this test, 
'autoFlush' is true. 

So, I don't understand why Put can sometimes fail in this scenario. 
{code:java}
table.put(put3);
ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value4, 
delete);
if(!ok){
 Result resultGet = table.get(new Get(ROW));
 LOG.info("debug " + resultGet.getValue(FAMILY,QUALIFIER));
}{code}

> Cell size limit check on append should consider cell's previous size.
> ---------------------------------------------------------------------
>
>                 Key: HBASE-22274
>                 URL: https://issues.apache.org/jira/browse/HBASE-22274
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 3.0.0, 2.0.0, 1.3.5
>            Reporter: Xu Cang
>            Assignee: Xu Cang
>            Priority: Minor
>         Attachments: HBASE-22274-branch-1.001.patch, 
> HBASE-22274-branch-1.002.patch, HBASE-22274-master.001.patch, 
> HBASE-22274-master.002.patch, HBASE-22274-master.002.patch, 
> HBASE-22274-master.003.patch
>
>
> Now we have cell size limit check based on this parameter 
> *hbase.server.keyvalue.maxsize* 
> One case was missing: appending to a cell only take append op's cell size 
> into account against this limit check. we should check against the potential 
> final cell size after the append.'
> It's easy to reproduce this :
>  
> Apply this diff
>  
> {code:java}
> diff --git 
> a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
>  
> b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
>  index 5a285ef6ba..8633177ebe 100644 --- 
> a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
>  +++ 
> b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
>  @@ -6455,7 +6455,7 
> - t.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 * 
> 1024])); 
> + t.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[2 * 1024])); 
> {code}
>  
> Fix is to add this check in #reckonDeltas in HRegion class, where we have 
> already got the appended cell's size. 
> Will throw DoNotRetryIOException if checks is failed.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to