[ 
https://issues.apache.org/jira/browse/HBASE-30248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18094518#comment-18094518
 ] 

jiang he commented on HBASE-30248:
----------------------------------

I tried to assign this issue to mazhengxuan, but it looks like the user is not 
assignable in the HBASE project yet.  Could someone with JIRA project 
permission please assign HBASE-30248 to mazhengxuan, or add them as an 
assignable user?  In the meantime, I am fine with mazhengxuan working on this 
issue, and I can help verify the patch with the original reproducer once a PR 
is available.

> 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
>
>  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)

Reply via email to