You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "ConfX (Jira)" <ji...@apache.org> on 2023/07/24 16:44:00 UTC
[jira] [Created] (HBASE-27990) BucketCache causes ArithmeticException due to improper blockSize value checking
ConfX created HBASE-27990:
-----------------------------
Summary: BucketCache causes ArithmeticException due to improper blockSize value checking
Key: HBASE-27990
URL: https://issues.apache.org/jira/browse/HBASE-27990
Project: HBase
Issue Type: Bug
Reporter: ConfX
Attachments: reproduce.sh
h2. What happened
There is no value checking for parameter {{{}hbase.blockcache.minblocksize{}}}. This may cause improper calculations and crashes the system like division by 0.
h2. Buggy code
In {{{}BucketCache.java{}}}, there is no value checking for {{blockSize}} and this variable is directly used to calculate the {{{}blockNumCapacity{}}}. When {{blockSize}} is mistakenly set to 0, the code would cause division by 0 and throw ArithmeticException to crash the system.
{noformat}
public BucketCache(String ioEngineName, long capacity, int blockSize, int[] bucketSizes,
int writerThreadNum, int writerQLen, String persistencePath, int ioErrorsTolerationDuration,
Configuration conf) throws IOException {
...
long blockNumCapacity = capacity / blockSize;
...{noformat}
h2. How to reproduce
(1) set hbase.blockcache.minblocksize=0
(2) run org.apache.hadoop.hbase.io.hfile.TestCacheConfig#testBucketCacheConfigL1L2Setup
you should observe the following failure:
{noformat}
java.lang.ArithmeticException: / by zero
at org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.<init>(BucketCache.java:282)
at org.apache.hadoop.hbase.io.hfile.BlockCacheFactory.createBucketCache(BlockCacheFactory.java:238)
at org.apache.hadoop.hbase.io.hfile.BlockCacheFactory.createBlockCache(BlockCacheFactory.java:110)
at org.apache.hadoop.hbase.io.hfile.TestCacheConfig.testBucketCacheConfigL1L2Setup(TestCacheConfig.java:325)
...{noformat}
For an easy reproduction, run the reproduce.sh in the attachment.
We are happy to provide a patch if this issue is confirmed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)