From 9e1c1cb242eb861806d18444298731b26386e264 Mon Sep 17 00:00:00 2001 From: ConfX <114765570+teamconfx@users.noreply.github.com> Date: Thu, 28 Mar 2024 23:01:23 +0800 Subject: [PATCH] HBASE-27990 BucketCache causes ArithmeticException due to improper blockSize value checking (#5389) Signed-off-by: Duo Zhang (cherry picked from commit 5a0c4de66b16281b25fd14bfbe2ee60d0657b8a3) --- .../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java index 42ed74f78bb9..728946c1c181 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java @@ -279,6 +279,8 @@ public BucketCache(String ioEngineName, long capacity, int blockSize, int[] buck public BucketCache(String ioEngineName, long capacity, int blockSize, int[] bucketSizes, int writerThreadNum, int writerQLen, String persistencePath, int ioErrorsTolerationDuration, Configuration conf) throws IOException { + Preconditions.checkArgument(blockSize > 0, + "BucketCache capacity is set to " + blockSize + ", can not be less than 0"); this.algorithm = conf.get(FILE_VERIFY_ALGORITHM, DEFAULT_FILE_VERIFY_ALGORITHM); this.ioEngine = getIOEngineFromName(ioEngineName, capacity, persistencePath); this.writerThreads = new WriterThread[writerThreadNum];