[
https://issues.apache.org/jira/browse/HBASE-30248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18095803#comment-18095803
]
mazhengxuan commented on HBASE-30248:
-------------------------------------
Thank you, Jiang He, for verifying the patch with the original reproducer and
testing both negative and zero values. I'm glad to hear that the RegionServer
no longer aborts and HBase starts successfully.
This confirms that the patch addresses the reported issue. I’ll continue
following up on the PR review and CI process. Thanks again for your help!
> Negative hbase.snapshot.region.timeout causes RegionServer abort during
> snapshot procedure initialization
> ---------------------------------------------------------------------------------------------------------
>
> Key: HBASE-30248
> URL: https://issues.apache.org/jira/browse/HBASE-30248
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 2.5.14
> Environment: ## Environment
> - HBase version: 2.5.14
> - Java: OpenJDK 11
> - Mode: local standalone HBase
> - OS: Linux / WSL2
>
> Reporter: jiang he
> Priority: Major
> Labels: pull-request-available
>
> When `hbase.snapshot.region.timeout` is configured as a negative value, the
> RegionServer aborts during initialization.
> The negative value is passed as the keep-alive time to a
> `ThreadPoolExecutor`, which throws `IllegalArgumentException`.
> ## Reproducer
> Use the following `hbase-site.xml` entries:
> ```xml
> <configuration>
> <property>
> <name>hbase.rootdir</name>
> <value>/tmp/hbase-tmp</value>
> </property>
> <property>
> <name>hbase.cluster.distributed</name>
> <value>false</value>
> </property>
> <property>
> <name>hbase.unsafe.stream.capability.enforce</name>
> <value>false</value>
> </property>
> <property>
> <name>hbase.snapshot.region.timeout</name>
> <value>-300000</value>
> </property>
> </configuration>
> Then start HBase.
> Actual result
> The RegionServer aborts:
> ERROR [RS:0;...] regionserver.HRegionServer:
> ***** ABORTING region server ... Initialization of RS failed. Hence
> aborting RS. *****
> java.lang.IllegalArgumentException
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1293)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1215)
> at
> org.apache.hadoop.hbase.procedure.ProcedureMember.defaultPool(ProcedureMember.java:86)
> at
> org.apache.hadoop.hbase.regionserver.snapshot.RegionServerSnapshotManager.initialize(RegionServerSnapshotManager.j
> ava:391)
> Root cause
> hbase.snapshot.region.timeout is read in
> RegionServerSnapshotManager.initialize and used as the keep-alive time when
> creating the snapshot procedure member thread pool.
> A negative value is invalid for ThreadPoolExecutor.
> Expected result
> HBase should validate hbase.snapshot.region.timeout and reject negative
> values with a clear configuration error, or fall
> back to a safe default.
> The RegionServer should not abort with a raw IllegalArgumentException.
> Notes
> The failure was found by configuration fuzzing.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)