[
https://issues.apache.org/jira/browse/HBASE-30247?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jiang he updated HBASE-30247:
-----------------------------
Component/s: Client
> Negative hbase.rpc.timeout causes RuntimeException during batch Put instead
> of early configuration validation
> -------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-30247
> URL: https://issues.apache.org/jira/browse/HBASE-30247
> Project: HBase
> Issue Type: Bug
> Components: Client
> 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.rpc.timeout` is configured as a negative value, HBase can start
> successfully, but a normal client batch Put
> fails at runtime with a `RuntimeException`.
> This looks like an invalid configuration value is not validated early. The
> failure is only exposed later in the client
> API path.
> ## 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.rpc.timeout</name>
> <value>-1</value>
> </property>
> <property>
> <name>hbase.client.operation.timeout</name>
> <value>1200000</value>
> </property>
> </configuration>
> Then start HBase and run a client workload that performs a batch Put.
> In my test, the client inserted several rows successfully first, then
> failed when executing batch Put.
> Actual result
> The client API fails with:
> java.lang.RuntimeException: The rpc timeout must be bigger than
> zero,current value is-1
> at
> org.apache.hadoop.hbase.client.AsyncProcess.checkTimeout(AsyncProcess.java:421)
> at
> org.apache.hadoop.hbase.client.AsyncProcess.checkRpcTimeout(AsyncProcess.java:432)
> at
> org.apache.hadoop.hbase.client.AsyncProcess.checkTask(AsyncProcess.java:389)
> at
> org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:205)
> at org.apache.hadoop.hbase.client.HTable.batch(HTable.java:464)
> at org.apache.hadoop.hbase.client.HTable.put(HTable.java:578)
> Expected result
> HBase should either:
> 1. reject the invalid negative hbase.rpc.timeout during
> configuration/startup, or
> 2. fall back to a safe default, or
> 3. throw a clearer configuration error before normal client operations run.
> A normal API operation should not fail later with an unchecked
> RuntimeException caused by an invalid timeout value.
> Notes
> The failure was found by configuration fuzzing.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)