[
https://issues.apache.org/jira/browse/HBASE-27993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HBASE-27993:
-----------------------------------
Labels: pull-request-available (was: )
> AbstractFSWAL causes ArithmeticException due to improper logRollSize value
> checking
> -----------------------------------------------------------------------------------
>
> Key: HBASE-27993
> URL: https://issues.apache.org/jira/browse/HBASE-27993
> Project: HBase
> Issue Type: Sub-task
> Reporter: ConfX
> Priority: Critical
> Labels: pull-request-available
> Attachments: reproduce.sh
>
>
> h2. What happened
> There is no value checking for parameter
> {{hbase.regionserver.logroll.multiplier}} when {{hbase.wal.provider}} is set
> to {{multiwal}}. This may cause improper calculations and crashes the system
> like division by 0.
> h2. Buggy code
> In {{AbstractFSWAL.java}}, there is no value checking for {{logRollSize and
> this variable is directly used while calculating the value of maxLogFiles in
> the method calculateMaxLogFiles}}. When logRollSize is mistakenly set to 0,
> the code would cause division by 0 and throw {{ArithmeticException}} to crash
> the system.
> {noformat}
> private int calculateMaxLogFiles(Configuration conf, long logRollSize) {
> Pair<Long, MemoryType> globalMemstoreSize =
> MemorySizeUtil.getGlobalMemStoreSize(conf);
> return (int) ((globalMemstoreSize.getFirst() * 2) / logRollSize);
> }{noformat}
> h2. How to reproduce
> (1) set hbase.regionserver.logroll.multiplier=0.0 and
> hbase.wal.provider=multiwal
> (2) run org.apache.hadoop.hbase.wal.TestWALMethods#testGetSplitEditFilesSorted
> you should observe the following failure:
> {noformat}
> java.lang.ArithmeticException: / by zero
> at
> org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.calculateMaxLogFiles(AbstractFSWAL.java:466)
> at
> org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL.<init>(AbstractFSWAL.java:594)
> at
> org.apache.hadoop.hbase.regionserver.wal.AsyncFSWAL.<init>(AsyncFSWAL.java:141)
> . . .{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)