[
https://issues.apache.org/jira/browse/HBASE-21134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16604642#comment-16604642
]
Esteban Gutierrez commented on HBASE-21134:
-------------------------------------------
Thanks for updating there [~mdrob], its correct the issue happens with ACLs but
it can also be triggered with Visibility Lables. Basically, you only need to
pass a big enough Map that can exceed 32KB at serialization time in order to
break HFileV3.
> 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
> Assignee: Esteban Gutierrez
> Priority: Critical
>
> 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)