[ 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)