wangxiangdong created HBASE-29586: ------------------------------------- Summary: Setting `hbase.oldwals.cleaner.thread.size` to negative value will throw IllegalArgumentException Key: HBASE-29586 URL: https://issues.apache.org/jira/browse/HBASE-29586 Project: HBase Issue Type: Bug Reporter: wangxiangdong Assignee: wangxiangdong
[problem] HBase Master cannot be initialized with the following setting: <property> <name>hbase.oldwals.cleaner.thread.size</name> <value>-1</value> <description>Default is 2</description> </property> After we read the source code, we found that "hbase.oldwals.cleaner.thread.size" is parsed and used in onConfigurationChange() function without checking: {code:java} int newSize = conf.getInt(OLD_WALS_CLEANER_THREAD_SIZE, DEFAULT_OLD_WALS_CLEANER_THREAD_SIZE); if (newSize == oldWALsCleaner.size()) { LOG.debug( "Size from configuration is the same as previous which " + "is {}, no need to update.", newSize); return; } interruptOldWALsCleaner(); oldWALsCleaner = createOldWalsCleaner(newSize);{code} The value of "hbase.oldwals.cleaner.thread.size" will be served as the initialCapacity of ArrayList. If the configuration value is negative, an IllegalArgumentException will be thrown.: {code:java} private List<Thread> createOldWalsCleaner(int size) { ... List<Thread> oldWALsCleaner = new ArrayList<>(size); ... } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)