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)

Reply via email to