Esteban Gutierrez created HBASE-21134:
-----------------------------------------

             Summary: Add guardrails to cell tags in order to avoid the tags 
length to overflow 
                 Key: HBASE-21134
                 URL: https://issues.apache.org/jira/browse/HBASE-21134
             Project: HBase
          Issue Type: Bug
    Affects Versions: 1.5.0
            Reporter: Esteban Gutierrez


We found that per cell tags can easily overflow and and cause failures while 
reading HFiles. If a mutation has more than 32KB for the byte array with the 
tags we should reject the operation on the client side (proactively) and the 
server side as we deserialize the request.

{code}
2018-08-21 11:08:45,387 ERROR 
org.apache.hadoop.hbase.regionserver.CompactSplitThread: Compaction failed 
Request = regionName=table1,,1534870486680.9112ca53504084152da5e28116f40ec2., 
storeName=c1, fileCount=4, fileSize=254.2 K (138.0 K, 33.5 K, 34.0 K, 48.7 K), 
priority=1, time=8555785624243
java.lang.IllegalStateException: Invalid currTagsLen -20658. Block offset: 0, 
block length: 44912, position: 0 (without header).
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV3$ScannerV3.checkTagsLen(HFileReaderV3.java:226)
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV3$ScannerV3.readKeyValueLen(HFileReaderV3.java:251)
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2.updateCurrBlock(HFileReaderV2.java:956)
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2.seekTo(HFileReaderV2.java:919)
        at 
org.apache.hadoop.hbase.regionserver.StoreFileScanner.seekAtOrAfter(StoreFileScanner.java:304)
        at 
org.apache.hadoop.hbase.regionserver.StoreFileScanner.seek(StoreFileScanner.java:200)
        at 
org.apache.hadoop.hbase.regionserver.StoreScanner.seekScanners(StoreScanner.java:350)
        at 
org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:269)
        at 
org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:231)
        at 
org.apache.hadoop.hbase.regionserver.compactions.Compactor.createScanner(Compactor.java:414)
        at 
org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor.compact(DefaultCompactor.java:91)
        at 
org.apache.hadoop.hbase.regionserver.DefaultStoreEngine$DefaultCompactionContext.compact(DefaultStoreEngine.java:125)
        at org.apache.hadoop.hbase.regionserver.HStore.compact(HStore.java:1247)
        at 
org.apache.hadoop.hbase.regionserver.HRegion.compact(HRegion.java:1915)
        at 
org.apache.hadoop.hbase.regionserver.CompactSplitThread$CompactionRunner.doCompaction(CompactSplitThread.java:529)
        at 
org.apache.hadoop.hbase.regionserver.CompactSplitThread$CompactionRunner.run(CompactSplitThread.java:566)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
{code}




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

Reply via email to