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

Reply via email to