You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2026/08/26 23:56:03 UTC

(hbase-site) branch asf-site updated: Published site at 8f59ec267b891047902286df4093dc5decde7ff2.

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new e6d1b7602ee Published site at 8f59ec267b891047902286df4093dc5decde7ff2.
e6d1b7602ee is described below

commit e6d1b7602ee85c310bcd65c2a6f7f94b331cf6df
Author: HBase <de...@hbase.apache.org>
AuthorDate: Wed Aug 26 23:51:25 2026 +0000

    Published site at 8f59ec267b891047902286df4093dc5decde7ff2.
---
 .../hbase/client/ConnectionConfiguration.html      | 315 +++++++++++----------
 books/apache-hbase-reference-guide-dark-mode.pdf   | Bin 38775819 -> 38775819 bytes
 books/apache-hbase-reference-guide.pdf             | Bin 38665189 -> 38665190 bytes
 checkstyle-aggregate.html                          |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/index-all.html                          |   2 +
 devapidocs/member-search-index.js                  |   2 +-
 .../hbase/client/ConnectionConfiguration.html      |  91 +++---
 .../hbase/client/ConnectionConfiguration.html      | 315 +++++++++++----------
 hbase-website/dependency-convergence.html          |   2 +-
 hbase-website/dependency-info.html                 |   2 +-
 hbase-website/dependency-management.html           |   2 +-
 hbase-website/index.html                           |   2 +-
 hbase-website/issue-management.html                |   2 +-
 hbase-website/licenses.html                        |   2 +-
 hbase-website/mailing-lists.html                   |   2 +-
 hbase-website/plugin-management.html               |   2 +-
 hbase-website/plugins.html                         |   2 +-
 hbase-website/project-info.html                    |   2 +-
 hbase-website/scm.html                             |   2 +-
 hbase-website/summary.html                         |   2 +-
 hbase-website/team.html                            |   2 +-
 issue-management.html                              |   2 +-
 licenses.html                                      |   2 +-
 mailing-lists.html                                 |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 scm.html                                           |   2 +-
 summary.html                                       |   2 +-
 team.html                                          |   2 +-
 testapidocs/index-all.html                         |   4 +
 testapidocs/member-search-index.js                 |   2 +-
 .../hbase/client/TestConnectionConfiguration.html  | 103 +++++--
 testdevapidocs/index-all.html                      |   4 +
 testdevapidocs/member-search-index.js              |   2 +-
 .../hbase/client/TestConnectionConfiguration.html  |  26 +-
 .../hbase/client/TestConnectionConfiguration.html  | 103 +++++--
 41 files changed, 591 insertions(+), 432 deletions(-)

diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html b/apidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
index b23cda16871..16d16669949 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
@@ -93,163 +93,172 @@
 <span class="source-line-no">080</span><span id="line-80">  // toggle for async/sync prefetch</span>
 <span class="source-line-no">081</span><span id="line-81">  private final boolean clientScannerAsyncPrefetch;</span>
 <span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  /**</span>
-<span class="source-line-no">084</span><span id="line-84">   * Constructor</span>
-<span class="source-line-no">085</span><span id="line-85">   * @param conf Configuration object</span>
-<span class="source-line-no">086</span><span id="line-86">   */</span>
-<span class="source-line-no">087</span><span id="line-87">  ConnectionConfiguration(Configuration conf) {</span>
-<span class="source-line-no">088</span><span id="line-88">    this.writeBufferSize = conf.getLong(WRITE_BUFFER_SIZE_KEY, WRITE_BUFFER_SIZE_DEFAULT);</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90">    this.writeBufferPeriodicFlushTimeoutMs = conf.getLong(WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS,</span>
-<span class="source-line-no">091</span><span id="line-91">      WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT);</span>
-<span class="source-line-no">092</span><span id="line-92"></span>
-<span class="source-line-no">093</span><span id="line-93">    this.writeBufferPeriodicFlushTimerTickMs = conf.getLong(</span>
-<span class="source-line-no">094</span><span id="line-94">      WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT);</span>
-<span class="source-line-no">095</span><span id="line-95"></span>
-<span class="source-line-no">096</span><span id="line-96">    this.metaOperationTimeout = conf.getInt(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT,</span>
-<span class="source-line-no">097</span><span id="line-97">      conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
-<span class="source-line-no">098</span><span id="line-98">        HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT));</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">    this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
-<span class="source-line-no">101</span><span id="line-101">      HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);</span>
-<span class="source-line-no">102</span><span id="line-102"></span>
-<span class="source-line-no">103</span><span id="line-103">    this.scannerCaching = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_CACHING,</span>
-<span class="source-line-no">104</span><span id="line-104">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING);</span>
-<span class="source-line-no">105</span><span id="line-105"></span>
-<span class="source-line-no">106</span><span id="line-106">    this.scannerMaxResultSize = conf.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,</span>
-<span class="source-line-no">107</span><span id="line-107">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">    this.primaryCallTimeoutMicroSecond =</span>
-<span class="source-line-no">110</span><span id="line-110">      conf.getInt(PRIMARY_CALL_TIMEOUT_MICROSECOND, PRIMARY_CALL_TIMEOUT_MICROSECOND_DEFAULT);</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">    this.replicaCallTimeoutMicroSecondScan =</span>
-<span class="source-line-no">113</span><span id="line-113">      conf.getInt(PRIMARY_SCAN_TIMEOUT_MICROSECOND, PRIMARY_SCAN_TIMEOUT_MICROSECOND_DEFAULT);</span>
-<span class="source-line-no">114</span><span id="line-114"></span>
-<span class="source-line-no">115</span><span id="line-115">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
-<span class="source-line-no">116</span><span id="line-116">      conf.getInt(HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT,</span>
-<span class="source-line-no">117</span><span id="line-117">        HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT);</span>
-<span class="source-line-no">118</span><span id="line-118"></span>
-<span class="source-line-no">119</span><span id="line-119">    this.retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,</span>
-<span class="source-line-no">120</span><span id="line-120">      HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">    this.clientScannerAsyncPrefetch = conf.getBoolean(Scan.HBASE_CLIENT_SCANNER_ASYNC_PREFETCH,</span>
-<span class="source-line-no">123</span><span id="line-123">      Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH);</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125">    this.maxKeyValueSize = conf.getInt(MAX_KEYVALUE_SIZE_KEY, MAX_KEYVALUE_SIZE_DEFAULT);</span>
+<span class="source-line-no">083</span><span id="line-83">  private static int getNonNegativeInt(Configuration conf, String key, int defaultValue) {</span>
+<span class="source-line-no">084</span><span id="line-84">    int value = conf.getInt(key, defaultValue);</span>
+<span class="source-line-no">085</span><span id="line-85">    if (value &lt; 0) {</span>
+<span class="source-line-no">086</span><span id="line-86">      throw new IllegalArgumentException(</span>
+<span class="source-line-no">087</span><span id="line-87">        "The " + key + " must be non-negative, current value is " + value);</span>
+<span class="source-line-no">088</span><span id="line-88">    }</span>
+<span class="source-line-no">089</span><span id="line-89">    return value;</span>
+<span class="source-line-no">090</span><span id="line-90">  }</span>
+<span class="source-line-no">091</span><span id="line-91"></span>
+<span class="source-line-no">092</span><span id="line-92">  /**</span>
+<span class="source-line-no">093</span><span id="line-93">   * Constructor</span>
+<span class="source-line-no">094</span><span id="line-94">   * @param conf Configuration object</span>
+<span class="source-line-no">095</span><span id="line-95">   */</span>
+<span class="source-line-no">096</span><span id="line-96">  ConnectionConfiguration(Configuration conf) {</span>
+<span class="source-line-no">097</span><span id="line-97">    this.writeBufferSize = conf.getLong(WRITE_BUFFER_SIZE_KEY, WRITE_BUFFER_SIZE_DEFAULT);</span>
+<span class="source-line-no">098</span><span id="line-98"></span>
+<span class="source-line-no">099</span><span id="line-99">    this.writeBufferPeriodicFlushTimeoutMs = conf.getLong(WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS,</span>
+<span class="source-line-no">100</span><span id="line-100">      WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT);</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">    this.writeBufferPeriodicFlushTimerTickMs = conf.getLong(</span>
+<span class="source-line-no">103</span><span id="line-103">      WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT);</span>
+<span class="source-line-no">104</span><span id="line-104"></span>
+<span class="source-line-no">105</span><span id="line-105">    this.operationTimeout = getNonNegativeInt(conf, HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
+<span class="source-line-no">106</span><span id="line-106">      HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);</span>
+<span class="source-line-no">107</span><span id="line-107"></span>
+<span class="source-line-no">108</span><span id="line-108">    this.metaOperationTimeout =</span>
+<span class="source-line-no">109</span><span id="line-109">      getNonNegativeInt(conf, HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, operationTimeout);</span>
+<span class="source-line-no">110</span><span id="line-110"></span>
+<span class="source-line-no">111</span><span id="line-111">    this.scannerCaching = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_CACHING,</span>
+<span class="source-line-no">112</span><span id="line-112">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING);</span>
+<span class="source-line-no">113</span><span id="line-113"></span>
+<span class="source-line-no">114</span><span id="line-114">    this.scannerMaxResultSize = conf.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,</span>
+<span class="source-line-no">115</span><span id="line-115">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);</span>
+<span class="source-line-no">116</span><span id="line-116"></span>
+<span class="source-line-no">117</span><span id="line-117">    this.primaryCallTimeoutMicroSecond = getNonNegativeInt(conf, PRIMARY_CALL_TIMEOUT_MICROSECOND,</span>
+<span class="source-line-no">118</span><span id="line-118">      PRIMARY_CALL_TIMEOUT_MICROSECOND_DEFAULT);</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120">    this.replicaCallTimeoutMicroSecondScan = getNonNegativeInt(conf,</span>
+<span class="source-line-no">121</span><span id="line-121">      PRIMARY_SCAN_TIMEOUT_MICROSECOND, PRIMARY_SCAN_TIMEOUT_MICROSECOND_DEFAULT);</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
+<span class="source-line-no">124</span><span id="line-124">      getNonNegativeInt(conf, HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT,</span>
+<span class="source-line-no">125</span><span id="line-125">        HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT);</span>
 <span class="source-line-no">126</span><span id="line-126"></span>
-<span class="source-line-no">127</span><span id="line-127">    this.bufferedMutatorMaxMutations =</span>
-<span class="source-line-no">128</span><span id="line-128">      conf.getInt(BUFFERED_MUTATOR_MAX_MUTATIONS_KEY, BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT);</span>
+<span class="source-line-no">127</span><span id="line-127">    this.retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,</span>
+<span class="source-line-no">128</span><span id="line-128">      HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);</span>
 <span class="source-line-no">129</span><span id="line-129"></span>
-<span class="source-line-no">130</span><span id="line-130">    this.rpcTimeout =</span>
-<span class="source-line-no">131</span><span id="line-131">      conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT);</span>
+<span class="source-line-no">130</span><span id="line-130">    this.clientScannerAsyncPrefetch = conf.getBoolean(Scan.HBASE_CLIENT_SCANNER_ASYNC_PREFETCH,</span>
+<span class="source-line-no">131</span><span id="line-131">      Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH);</span>
 <span class="source-line-no">132</span><span id="line-132"></span>
-<span class="source-line-no">133</span><span id="line-133">    this.readRpcTimeout = conf.getInt(HConstants.HBASE_RPC_READ_TIMEOUT_KEY,</span>
-<span class="source-line-no">134</span><span id="line-134">      conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT));</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136">    this.metaReadRpcTimeout = conf.getInt(HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, readRpcTimeout);</span>
+<span class="source-line-no">133</span><span id="line-133">    this.maxKeyValueSize = conf.getInt(MAX_KEYVALUE_SIZE_KEY, MAX_KEYVALUE_SIZE_DEFAULT);</span>
+<span class="source-line-no">134</span><span id="line-134"></span>
+<span class="source-line-no">135</span><span id="line-135">    this.bufferedMutatorMaxMutations =</span>
+<span class="source-line-no">136</span><span id="line-136">      conf.getInt(BUFFERED_MUTATOR_MAX_MUTATIONS_KEY, BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT);</span>
 <span class="source-line-no">137</span><span id="line-137"></span>
-<span class="source-line-no">138</span><span id="line-138">    this.writeRpcTimeout = conf.getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,</span>
-<span class="source-line-no">139</span><span id="line-139">      conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT));</span>
-<span class="source-line-no">140</span><span id="line-140">  }</span>
-<span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142">  /**</span>
-<span class="source-line-no">143</span><span id="line-143">   * Constructor This is for internal testing purpose (using the default value). In real usage, we</span>
-<span class="source-line-no">144</span><span id="line-144">   * should read the configuration from the Configuration object.</span>
-<span class="source-line-no">145</span><span id="line-145">   */</span>
-<span class="source-line-no">146</span><span id="line-146">  protected ConnectionConfiguration() {</span>
-<span class="source-line-no">147</span><span id="line-147">    this.writeBufferSize = WRITE_BUFFER_SIZE_DEFAULT;</span>
-<span class="source-line-no">148</span><span id="line-148">    this.writeBufferPeriodicFlushTimeoutMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT;</span>
-<span class="source-line-no">149</span><span id="line-149">    this.writeBufferPeriodicFlushTimerTickMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT;</span>
-<span class="source-line-no">150</span><span id="line-150">    this.metaOperationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
-<span class="source-line-no">151</span><span id="line-151">    this.operationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
-<span class="source-line-no">152</span><span id="line-152">    this.scannerCaching = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING;</span>
-<span class="source-line-no">153</span><span id="line-153">    this.scannerMaxResultSize = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE;</span>
-<span class="source-line-no">154</span><span id="line-154">    this.primaryCallTimeoutMicroSecond = 10000;</span>
-<span class="source-line-no">155</span><span id="line-155">    this.replicaCallTimeoutMicroSecondScan = 1000000;</span>
-<span class="source-line-no">156</span><span id="line-156">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
-<span class="source-line-no">157</span><span id="line-157">      HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT;</span>
-<span class="source-line-no">158</span><span id="line-158">    this.retries = HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER;</span>
-<span class="source-line-no">159</span><span id="line-159">    this.clientScannerAsyncPrefetch = Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH;</span>
-<span class="source-line-no">160</span><span id="line-160">    this.maxKeyValueSize = MAX_KEYVALUE_SIZE_DEFAULT;</span>
-<span class="source-line-no">161</span><span id="line-161">    this.bufferedMutatorMaxMutations = BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT;</span>
-<span class="source-line-no">162</span><span id="line-162">    this.readRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">163</span><span id="line-163">    this.metaReadRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">164</span><span id="line-164">    this.writeRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">165</span><span id="line-165">    this.rpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">166</span><span id="line-166">  }</span>
-<span class="source-line-no">167</span><span id="line-167"></span>
-<span class="source-line-no">168</span><span id="line-168">  public int getReadRpcTimeout() {</span>
-<span class="source-line-no">169</span><span id="line-169">    return readRpcTimeout;</span>
-<span class="source-line-no">170</span><span id="line-170">  }</span>
-<span class="source-line-no">171</span><span id="line-171"></span>
-<span class="source-line-no">172</span><span id="line-172">  public int getMetaReadRpcTimeout() {</span>
-<span class="source-line-no">173</span><span id="line-173">    return metaReadRpcTimeout;</span>
-<span class="source-line-no">174</span><span id="line-174">  }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176">  public int getWriteRpcTimeout() {</span>
-<span class="source-line-no">177</span><span id="line-177">    return writeRpcTimeout;</span>
-<span class="source-line-no">178</span><span id="line-178">  }</span>
-<span class="source-line-no">179</span><span id="line-179"></span>
-<span class="source-line-no">180</span><span id="line-180">  public long getWriteBufferSize() {</span>
-<span class="source-line-no">181</span><span id="line-181">    return writeBufferSize;</span>
-<span class="source-line-no">182</span><span id="line-182">  }</span>
-<span class="source-line-no">183</span><span id="line-183"></span>
-<span class="source-line-no">184</span><span id="line-184">  public long getWriteBufferPeriodicFlushTimeoutMs() {</span>
-<span class="source-line-no">185</span><span id="line-185">    return writeBufferPeriodicFlushTimeoutMs;</span>
-<span class="source-line-no">186</span><span id="line-186">  }</span>
-<span class="source-line-no">187</span><span id="line-187"></span>
-<span class="source-line-no">188</span><span id="line-188">  public long getWriteBufferPeriodicFlushTimerTickMs() {</span>
-<span class="source-line-no">189</span><span id="line-189">    return writeBufferPeriodicFlushTimerTickMs;</span>
-<span class="source-line-no">190</span><span id="line-190">  }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192">  public int getMetaOperationTimeout() {</span>
-<span class="source-line-no">193</span><span id="line-193">    return metaOperationTimeout;</span>
-<span class="source-line-no">194</span><span id="line-194">  }</span>
-<span class="source-line-no">195</span><span id="line-195"></span>
-<span class="source-line-no">196</span><span id="line-196">  public int getOperationTimeout() {</span>
-<span class="source-line-no">197</span><span id="line-197">    return operationTimeout;</span>
-<span class="source-line-no">198</span><span id="line-198">  }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200">  public int getScannerCaching() {</span>
-<span class="source-line-no">201</span><span id="line-201">    return scannerCaching;</span>
-<span class="source-line-no">202</span><span id="line-202">  }</span>
-<span class="source-line-no">203</span><span id="line-203"></span>
-<span class="source-line-no">204</span><span id="line-204">  public int getPrimaryCallTimeoutMicroSecond() {</span>
-<span class="source-line-no">205</span><span id="line-205">    return primaryCallTimeoutMicroSecond;</span>
-<span class="source-line-no">206</span><span id="line-206">  }</span>
-<span class="source-line-no">207</span><span id="line-207"></span>
-<span class="source-line-no">208</span><span id="line-208">  public int getReplicaCallTimeoutMicroSecondScan() {</span>
-<span class="source-line-no">209</span><span id="line-209">    return replicaCallTimeoutMicroSecondScan;</span>
-<span class="source-line-no">210</span><span id="line-210">  }</span>
-<span class="source-line-no">211</span><span id="line-211"></span>
-<span class="source-line-no">212</span><span id="line-212">  public int getMetaReplicaCallTimeoutMicroSecondScan() {</span>
-<span class="source-line-no">213</span><span id="line-213">    return metaReplicaCallTimeoutMicroSecondScan;</span>
-<span class="source-line-no">214</span><span id="line-214">  }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216">  public int getRetriesNumber() {</span>
-<span class="source-line-no">217</span><span id="line-217">    return retries;</span>
-<span class="source-line-no">218</span><span id="line-218">  }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220">  public int getMaxKeyValueSize() {</span>
-<span class="source-line-no">221</span><span id="line-221">    return maxKeyValueSize;</span>
-<span class="source-line-no">222</span><span id="line-222">  }</span>
-<span class="source-line-no">223</span><span id="line-223"></span>
-<span class="source-line-no">224</span><span id="line-224">  public int getBufferedMutatorMaxMutations() {</span>
-<span class="source-line-no">225</span><span id="line-225">    return bufferedMutatorMaxMutations;</span>
-<span class="source-line-no">226</span><span id="line-226">  }</span>
-<span class="source-line-no">227</span><span id="line-227"></span>
-<span class="source-line-no">228</span><span id="line-228">  public long getScannerMaxResultSize() {</span>
-<span class="source-line-no">229</span><span id="line-229">    return scannerMaxResultSize;</span>
-<span class="source-line-no">230</span><span id="line-230">  }</span>
-<span class="source-line-no">231</span><span id="line-231"></span>
-<span class="source-line-no">232</span><span id="line-232">  public boolean isClientScannerAsyncPrefetch() {</span>
-<span class="source-line-no">233</span><span id="line-233">    return clientScannerAsyncPrefetch;</span>
-<span class="source-line-no">234</span><span id="line-234">  }</span>
-<span class="source-line-no">235</span><span id="line-235"></span>
-<span class="source-line-no">236</span><span id="line-236">  public int getRpcTimeout() {</span>
-<span class="source-line-no">237</span><span id="line-237">    return rpcTimeout;</span>
-<span class="source-line-no">238</span><span id="line-238">  }</span>
-<span class="source-line-no">239</span><span id="line-239">}</span>
+<span class="source-line-no">138</span><span id="line-138">    this.rpcTimeout = getNonNegativeInt(conf, HConstants.HBASE_RPC_TIMEOUT_KEY,</span>
+<span class="source-line-no">139</span><span id="line-139">      HConstants.DEFAULT_HBASE_RPC_TIMEOUT);</span>
+<span class="source-line-no">140</span><span id="line-140"></span>
+<span class="source-line-no">141</span><span id="line-141">    this.readRpcTimeout =</span>
+<span class="source-line-no">142</span><span id="line-142">      getNonNegativeInt(conf, HConstants.HBASE_RPC_READ_TIMEOUT_KEY, rpcTimeout);</span>
+<span class="source-line-no">143</span><span id="line-143"></span>
+<span class="source-line-no">144</span><span id="line-144">    this.metaReadRpcTimeout =</span>
+<span class="source-line-no">145</span><span id="line-145">      getNonNegativeInt(conf, HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, readRpcTimeout);</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147">    this.writeRpcTimeout =</span>
+<span class="source-line-no">148</span><span id="line-148">      getNonNegativeInt(conf, HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY, rpcTimeout);</span>
+<span class="source-line-no">149</span><span id="line-149">  }</span>
+<span class="source-line-no">150</span><span id="line-150"></span>
+<span class="source-line-no">151</span><span id="line-151">  /**</span>
+<span class="source-line-no">152</span><span id="line-152">   * Constructor This is for internal testing purpose (using the default value). In real usage, we</span>
+<span class="source-line-no">153</span><span id="line-153">   * should read the configuration from the Configuration object.</span>
+<span class="source-line-no">154</span><span id="line-154">   */</span>
+<span class="source-line-no">155</span><span id="line-155">  protected ConnectionConfiguration() {</span>
+<span class="source-line-no">156</span><span id="line-156">    this.writeBufferSize = WRITE_BUFFER_SIZE_DEFAULT;</span>
+<span class="source-line-no">157</span><span id="line-157">    this.writeBufferPeriodicFlushTimeoutMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT;</span>
+<span class="source-line-no">158</span><span id="line-158">    this.writeBufferPeriodicFlushTimerTickMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT;</span>
+<span class="source-line-no">159</span><span id="line-159">    this.metaOperationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
+<span class="source-line-no">160</span><span id="line-160">    this.operationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
+<span class="source-line-no">161</span><span id="line-161">    this.scannerCaching = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING;</span>
+<span class="source-line-no">162</span><span id="line-162">    this.scannerMaxResultSize = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE;</span>
+<span class="source-line-no">163</span><span id="line-163">    this.primaryCallTimeoutMicroSecond = 10000;</span>
+<span class="source-line-no">164</span><span id="line-164">    this.replicaCallTimeoutMicroSecondScan = 1000000;</span>
+<span class="source-line-no">165</span><span id="line-165">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
+<span class="source-line-no">166</span><span id="line-166">      HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT;</span>
+<span class="source-line-no">167</span><span id="line-167">    this.retries = HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER;</span>
+<span class="source-line-no">168</span><span id="line-168">    this.clientScannerAsyncPrefetch = Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH;</span>
+<span class="source-line-no">169</span><span id="line-169">    this.maxKeyValueSize = MAX_KEYVALUE_SIZE_DEFAULT;</span>
+<span class="source-line-no">170</span><span id="line-170">    this.bufferedMutatorMaxMutations = BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT;</span>
+<span class="source-line-no">171</span><span id="line-171">    this.readRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">172</span><span id="line-172">    this.metaReadRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">173</span><span id="line-173">    this.writeRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">174</span><span id="line-174">    this.rpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">175</span><span id="line-175">  }</span>
+<span class="source-line-no">176</span><span id="line-176"></span>
+<span class="source-line-no">177</span><span id="line-177">  public int getReadRpcTimeout() {</span>
+<span class="source-line-no">178</span><span id="line-178">    return readRpcTimeout;</span>
+<span class="source-line-no">179</span><span id="line-179">  }</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181">  public int getMetaReadRpcTimeout() {</span>
+<span class="source-line-no">182</span><span id="line-182">    return metaReadRpcTimeout;</span>
+<span class="source-line-no">183</span><span id="line-183">  }</span>
+<span class="source-line-no">184</span><span id="line-184"></span>
+<span class="source-line-no">185</span><span id="line-185">  public int getWriteRpcTimeout() {</span>
+<span class="source-line-no">186</span><span id="line-186">    return writeRpcTimeout;</span>
+<span class="source-line-no">187</span><span id="line-187">  }</span>
+<span class="source-line-no">188</span><span id="line-188"></span>
+<span class="source-line-no">189</span><span id="line-189">  public long getWriteBufferSize() {</span>
+<span class="source-line-no">190</span><span id="line-190">    return writeBufferSize;</span>
+<span class="source-line-no">191</span><span id="line-191">  }</span>
+<span class="source-line-no">192</span><span id="line-192"></span>
+<span class="source-line-no">193</span><span id="line-193">  public long getWriteBufferPeriodicFlushTimeoutMs() {</span>
+<span class="source-line-no">194</span><span id="line-194">    return writeBufferPeriodicFlushTimeoutMs;</span>
+<span class="source-line-no">195</span><span id="line-195">  }</span>
+<span class="source-line-no">196</span><span id="line-196"></span>
+<span class="source-line-no">197</span><span id="line-197">  public long getWriteBufferPeriodicFlushTimerTickMs() {</span>
+<span class="source-line-no">198</span><span id="line-198">    return writeBufferPeriodicFlushTimerTickMs;</span>
+<span class="source-line-no">199</span><span id="line-199">  }</span>
+<span class="source-line-no">200</span><span id="line-200"></span>
+<span class="source-line-no">201</span><span id="line-201">  public int getMetaOperationTimeout() {</span>
+<span class="source-line-no">202</span><span id="line-202">    return metaOperationTimeout;</span>
+<span class="source-line-no">203</span><span id="line-203">  }</span>
+<span class="source-line-no">204</span><span id="line-204"></span>
+<span class="source-line-no">205</span><span id="line-205">  public int getOperationTimeout() {</span>
+<span class="source-line-no">206</span><span id="line-206">    return operationTimeout;</span>
+<span class="source-line-no">207</span><span id="line-207">  }</span>
+<span class="source-line-no">208</span><span id="line-208"></span>
+<span class="source-line-no">209</span><span id="line-209">  public int getScannerCaching() {</span>
+<span class="source-line-no">210</span><span id="line-210">    return scannerCaching;</span>
+<span class="source-line-no">211</span><span id="line-211">  }</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">  public int getPrimaryCallTimeoutMicroSecond() {</span>
+<span class="source-line-no">214</span><span id="line-214">    return primaryCallTimeoutMicroSecond;</span>
+<span class="source-line-no">215</span><span id="line-215">  }</span>
+<span class="source-line-no">216</span><span id="line-216"></span>
+<span class="source-line-no">217</span><span id="line-217">  public int getReplicaCallTimeoutMicroSecondScan() {</span>
+<span class="source-line-no">218</span><span id="line-218">    return replicaCallTimeoutMicroSecondScan;</span>
+<span class="source-line-no">219</span><span id="line-219">  }</span>
+<span class="source-line-no">220</span><span id="line-220"></span>
+<span class="source-line-no">221</span><span id="line-221">  public int getMetaReplicaCallTimeoutMicroSecondScan() {</span>
+<span class="source-line-no">222</span><span id="line-222">    return metaReplicaCallTimeoutMicroSecondScan;</span>
+<span class="source-line-no">223</span><span id="line-223">  }</span>
+<span class="source-line-no">224</span><span id="line-224"></span>
+<span class="source-line-no">225</span><span id="line-225">  public int getRetriesNumber() {</span>
+<span class="source-line-no">226</span><span id="line-226">    return retries;</span>
+<span class="source-line-no">227</span><span id="line-227">  }</span>
+<span class="source-line-no">228</span><span id="line-228"></span>
+<span class="source-line-no">229</span><span id="line-229">  public int getMaxKeyValueSize() {</span>
+<span class="source-line-no">230</span><span id="line-230">    return maxKeyValueSize;</span>
+<span class="source-line-no">231</span><span id="line-231">  }</span>
+<span class="source-line-no">232</span><span id="line-232"></span>
+<span class="source-line-no">233</span><span id="line-233">  public int getBufferedMutatorMaxMutations() {</span>
+<span class="source-line-no">234</span><span id="line-234">    return bufferedMutatorMaxMutations;</span>
+<span class="source-line-no">235</span><span id="line-235">  }</span>
+<span class="source-line-no">236</span><span id="line-236"></span>
+<span class="source-line-no">237</span><span id="line-237">  public long getScannerMaxResultSize() {</span>
+<span class="source-line-no">238</span><span id="line-238">    return scannerMaxResultSize;</span>
+<span class="source-line-no">239</span><span id="line-239">  }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241">  public boolean isClientScannerAsyncPrefetch() {</span>
+<span class="source-line-no">242</span><span id="line-242">    return clientScannerAsyncPrefetch;</span>
+<span class="source-line-no">243</span><span id="line-243">  }</span>
+<span class="source-line-no">244</span><span id="line-244"></span>
+<span class="source-line-no">245</span><span id="line-245">  public int getRpcTimeout() {</span>
+<span class="source-line-no">246</span><span id="line-246">    return rpcTimeout;</span>
+<span class="source-line-no">247</span><span id="line-247">  }</span>
+<span class="source-line-no">248</span><span id="line-248">}</span>
 
 
 
diff --git a/books/apache-hbase-reference-guide-dark-mode.pdf b/books/apache-hbase-reference-guide-dark-mode.pdf
index a559085218e..a447fd245c0 100644
Binary files a/books/apache-hbase-reference-guide-dark-mode.pdf and b/books/apache-hbase-reference-guide-dark-mode.pdf differ
diff --git a/books/apache-hbase-reference-guide.pdf b/books/apache-hbase-reference-guide.pdf
index d5037190988..a3fd132c7ee 100644
Binary files a/books/apache-hbase-reference-guide.pdf and b/books/apache-hbase-reference-guide.pdf differ
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 2a2cff2304c..ee1fb34f114 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 9dffba95142..2e75aa447d6 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-info.html b/dependency-info.html
index 3e8669c463f..d9c4449b857 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/dependency-management.html b/dependency-management.html
index 4ea5b15ca25..ccd88cdcf95 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 0d0399fbacb..de98f2a1faf 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -57190,6 +57190,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/RegionMover.html#getNonMetaRegionsMovePlan()" class="member-name-link">getNonMetaRegionsMovePlan()</a> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RegionMover.html" title="class in org.apache.hadoop.hbase.util">RegionMover</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/ConnectionConfiguration.html#getNonNegativeInt(org.apache.hadoop.conf.Configuration,java.lang.String,int)" class="member-name-link">getNonNegativeInt(Configuration, String, int)</a> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">ConnectionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.BlockIndexReader.html#getNonRootIndexedKey(org.apache.hadoop.hbase.nio.ByteBuff,int)" class="member-name-link">getNonRootIndexedKey(ByteBuff, int)</a> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.BlockIndexReader.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlockIndex.BlockIndexReader</a></dt>
 <dd>
 <div class="block">The indexed key at the ith position in the nonRootIndex.</div>
diff --git a/devapidocs/member-search-index.js b/devapidocs/member-search-index.js
index 4036cf1fcd9..d133b1009fe 100644
--- a/devapidocs/member-search-index.js
+++ b/devapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache. [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache. [...]
\ No newline at end of file
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ConnectionConfiguration.html b/devapidocs/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
index 2a0d9562963..1e3beb5d9a7 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
@@ -235,7 +235,7 @@ loadScripts(document, 'script');</script>
 <section class="method-summary" id="method-summary">
 <h2>Method Summary</h2>
 <div id="method-summary-table">
-<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab( [...]
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab( [...]
 <div id="method-summary-table.tabpanel" role="tabpanel">
 <div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
 <div class="table-header col-first">Modifier and Type</div>
@@ -256,45 +256,50 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMetaReplicaCallTimeoutMicroSecondScan()" class="member-name-link">getMetaReplicaCallTimeoutMicroSecondScan</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationTimeout()" class="member-name-link">getOperationTimeout</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>private static int</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNonNegativeInt(org.apache.hadoop.conf.Configuration,java.lang.String,int)" class="member-name-link">getNonNegativeInt</a><wbr>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
+ int&nbsp;defaultValue)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPrimaryCallTimeoutMicroSecond()" class="member-name-link">getPrimaryCallTimeoutMicroSecond</a>()</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOperationTimeout()" class="member-name-link">getOperationTimeout</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReadRpcTimeout()" class="member-name-link">getReadRpcTimeout</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPrimaryCallTimeoutMicroSecond()" class="member-name-link">getPrimaryCallTimeoutMicroSecond</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReplicaCallTimeoutMicroSecondScan()" class="member-name-link">getReplicaCallTimeoutMicroSecondScan</a>()</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReadRpcTimeout()" class="member-name-link">getReadRpcTimeout</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRetriesNumber()" class="member-name-link">getRetriesNumber</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReplicaCallTimeoutMicroSecondScan()" class="member-name-link">getReplicaCallTimeoutMicroSecondScan</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRpcTimeout()" class="member-name-link">getRpcTimeout</a>()</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRetriesNumber()" class="member-name-link">getRetriesNumber</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScannerCaching()" class="member-name-link">getScannerCaching</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRpcTimeout()" class="member-name-link">getRpcTimeout</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScannerMaxResultSize()" class="member-name-link">getScannerMaxResultSize</a>()</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScannerCaching()" class="member-name-link">getScannerCaching</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteBufferPeriodicFlushTimeoutMs()" class="member-name-link">getWriteBufferPeriodicFlushTimeoutMs</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScannerMaxResultSize()" class="member-name-link">getScannerMaxResultSize</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteBufferPeriodicFlushTimerTickMs()" class="member-name-link">getWriteBufferPeriodicFlushTimerTickMs</a>()</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteBufferPeriodicFlushTimeoutMs()" class="member-name-link">getWriteBufferPeriodicFlushTimeoutMs</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteBufferSize()" class="member-name-link">getWriteBufferSize</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteBufferPeriodicFlushTimerTickMs()" class="member-name-link">getWriteBufferPeriodicFlushTimerTickMs</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteRpcTimeout()" class="member-name-link">getWriteRpcTimeout</a>()</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteBufferSize()" class="member-name-link">getWriteBufferSize</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isClientScannerAsyncPrefetch()" class="member-name-link">isClientScannerAsyncPrefetch</a>()</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWriteRpcTimeout()" class="member-name-link">getWriteRpcTimeout</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isClientScannerAsyncPrefetch()" class="member-name-link">isClientScannerAsyncPrefetch</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 </div>
 </div>
 </div>
@@ -683,7 +688,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;(org.apache.hadoop.conf.Configuration)">
 <h3>ConnectionConfiguration</h3>
-<div class="member-signature"><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-87">ConnectionConfiguration</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf)</span></div>
+<div class="member-signature"><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-96">ConnectionConfiguration</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf)</span></div>
 <div class="block">Constructor</div>
 <dl class="notes">
 <dt>Parameters:</dt>
@@ -694,7 +699,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;()">
 <h3>ConnectionConfiguration</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-146">ConnectionConfiguration</a></span>()</div>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-155">ConnectionConfiguration</a></span>()</div>
 <div class="block">Constructor This is for internal testing purpose (using the default value). In real usage, we
  should read the configuration from the Configuration object.</div>
 </section>
@@ -708,111 +713,119 @@ loadScripts(document, 'script');</script>
 <h2>Method Details</h2>
 <ul class="member-list">
 <li>
+<section class="detail" id="getNonNegativeInt(org.apache.hadoop.conf.Configuration,java.lang.String,int)">
+<h3>getNonNegativeInt</h3>
+<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-83">getNonNegativeInt</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
+ int&nbsp;defaultValue)</span></div>
+</section>
+</li>
+<li>
 <section class="detail" id="getReadRpcTimeout()">
 <h3>getReadRpcTimeout</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-168">getReadRpcTimeout</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-177">getReadRpcTimeout</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getMetaReadRpcTimeout()">
 <h3>getMetaReadRpcTimeout</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-172">getMetaReadRpcTimeout</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-181">getMetaReadRpcTimeout</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getWriteRpcTimeout()">
 <h3>getWriteRpcTimeout</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-176">getWriteRpcTimeout</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-185">getWriteRpcTimeout</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getWriteBufferSize()">
 <h3>getWriteBufferSize</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-180">getWriteBufferSize</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-189">getWriteBufferSize</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getWriteBufferPeriodicFlushTimeoutMs()">
 <h3>getWriteBufferPeriodicFlushTimeoutMs</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-184">getWriteBufferPeriodicFlushTimeoutMs</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-193">getWriteBufferPeriodicFlushTimeoutMs</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getWriteBufferPeriodicFlushTimerTickMs()">
 <h3>getWriteBufferPeriodicFlushTimerTickMs</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-188">getWriteBufferPeriodicFlushTimerTickMs</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-197">getWriteBufferPeriodicFlushTimerTickMs</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getMetaOperationTimeout()">
 <h3>getMetaOperationTimeout</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-192">getMetaOperationTimeout</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-201">getMetaOperationTimeout</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getOperationTimeout()">
 <h3>getOperationTimeout</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-196">getOperationTimeout</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-205">getOperationTimeout</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getScannerCaching()">
 <h3>getScannerCaching</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-200">getScannerCaching</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-209">getScannerCaching</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getPrimaryCallTimeoutMicroSecond()">
 <h3>getPrimaryCallTimeoutMicroSecond</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-204">getPrimaryCallTimeoutMicroSecond</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-213">getPrimaryCallTimeoutMicroSecond</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getReplicaCallTimeoutMicroSecondScan()">
 <h3>getReplicaCallTimeoutMicroSecondScan</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-208">getReplicaCallTimeoutMicroSecondScan</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-217">getReplicaCallTimeoutMicroSecondScan</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getMetaReplicaCallTimeoutMicroSecondScan()">
 <h3>getMetaReplicaCallTimeoutMicroSecondScan</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-212">getMetaReplicaCallTimeoutMicroSecondScan</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-221">getMetaReplicaCallTimeoutMicroSecondScan</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getRetriesNumber()">
 <h3>getRetriesNumber</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-216">getRetriesNumber</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-225">getRetriesNumber</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getMaxKeyValueSize()">
 <h3>getMaxKeyValueSize</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-220">getMaxKeyValueSize</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-229">getMaxKeyValueSize</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getBufferedMutatorMaxMutations()">
 <h3>getBufferedMutatorMaxMutations</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-224">getBufferedMutatorMaxMutations</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-233">getBufferedMutatorMaxMutations</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getScannerMaxResultSize()">
 <h3>getScannerMaxResultSize</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-228">getScannerMaxResultSize</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-237">getScannerMaxResultSize</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="isClientScannerAsyncPrefetch()">
 <h3>isClientScannerAsyncPrefetch</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-232">isClientScannerAsyncPrefetch</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-241">isClientScannerAsyncPrefetch</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getRpcTimeout()">
 <h3>getRpcTimeout</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-236">getRpcTimeout</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html#line-245">getRpcTimeout</a></span>()</div>
 </section>
 </li>
 </ul>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
index b23cda16871..16d16669949 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionConfiguration.html
@@ -93,163 +93,172 @@
 <span class="source-line-no">080</span><span id="line-80">  // toggle for async/sync prefetch</span>
 <span class="source-line-no">081</span><span id="line-81">  private final boolean clientScannerAsyncPrefetch;</span>
 <span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  /**</span>
-<span class="source-line-no">084</span><span id="line-84">   * Constructor</span>
-<span class="source-line-no">085</span><span id="line-85">   * @param conf Configuration object</span>
-<span class="source-line-no">086</span><span id="line-86">   */</span>
-<span class="source-line-no">087</span><span id="line-87">  ConnectionConfiguration(Configuration conf) {</span>
-<span class="source-line-no">088</span><span id="line-88">    this.writeBufferSize = conf.getLong(WRITE_BUFFER_SIZE_KEY, WRITE_BUFFER_SIZE_DEFAULT);</span>
-<span class="source-line-no">089</span><span id="line-89"></span>
-<span class="source-line-no">090</span><span id="line-90">    this.writeBufferPeriodicFlushTimeoutMs = conf.getLong(WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS,</span>
-<span class="source-line-no">091</span><span id="line-91">      WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT);</span>
-<span class="source-line-no">092</span><span id="line-92"></span>
-<span class="source-line-no">093</span><span id="line-93">    this.writeBufferPeriodicFlushTimerTickMs = conf.getLong(</span>
-<span class="source-line-no">094</span><span id="line-94">      WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT);</span>
-<span class="source-line-no">095</span><span id="line-95"></span>
-<span class="source-line-no">096</span><span id="line-96">    this.metaOperationTimeout = conf.getInt(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT,</span>
-<span class="source-line-no">097</span><span id="line-97">      conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
-<span class="source-line-no">098</span><span id="line-98">        HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT));</span>
-<span class="source-line-no">099</span><span id="line-99"></span>
-<span class="source-line-no">100</span><span id="line-100">    this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
-<span class="source-line-no">101</span><span id="line-101">      HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);</span>
-<span class="source-line-no">102</span><span id="line-102"></span>
-<span class="source-line-no">103</span><span id="line-103">    this.scannerCaching = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_CACHING,</span>
-<span class="source-line-no">104</span><span id="line-104">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING);</span>
-<span class="source-line-no">105</span><span id="line-105"></span>
-<span class="source-line-no">106</span><span id="line-106">    this.scannerMaxResultSize = conf.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,</span>
-<span class="source-line-no">107</span><span id="line-107">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">    this.primaryCallTimeoutMicroSecond =</span>
-<span class="source-line-no">110</span><span id="line-110">      conf.getInt(PRIMARY_CALL_TIMEOUT_MICROSECOND, PRIMARY_CALL_TIMEOUT_MICROSECOND_DEFAULT);</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">    this.replicaCallTimeoutMicroSecondScan =</span>
-<span class="source-line-no">113</span><span id="line-113">      conf.getInt(PRIMARY_SCAN_TIMEOUT_MICROSECOND, PRIMARY_SCAN_TIMEOUT_MICROSECOND_DEFAULT);</span>
-<span class="source-line-no">114</span><span id="line-114"></span>
-<span class="source-line-no">115</span><span id="line-115">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
-<span class="source-line-no">116</span><span id="line-116">      conf.getInt(HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT,</span>
-<span class="source-line-no">117</span><span id="line-117">        HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT);</span>
-<span class="source-line-no">118</span><span id="line-118"></span>
-<span class="source-line-no">119</span><span id="line-119">    this.retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,</span>
-<span class="source-line-no">120</span><span id="line-120">      HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">    this.clientScannerAsyncPrefetch = conf.getBoolean(Scan.HBASE_CLIENT_SCANNER_ASYNC_PREFETCH,</span>
-<span class="source-line-no">123</span><span id="line-123">      Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH);</span>
-<span class="source-line-no">124</span><span id="line-124"></span>
-<span class="source-line-no">125</span><span id="line-125">    this.maxKeyValueSize = conf.getInt(MAX_KEYVALUE_SIZE_KEY, MAX_KEYVALUE_SIZE_DEFAULT);</span>
+<span class="source-line-no">083</span><span id="line-83">  private static int getNonNegativeInt(Configuration conf, String key, int defaultValue) {</span>
+<span class="source-line-no">084</span><span id="line-84">    int value = conf.getInt(key, defaultValue);</span>
+<span class="source-line-no">085</span><span id="line-85">    if (value &lt; 0) {</span>
+<span class="source-line-no">086</span><span id="line-86">      throw new IllegalArgumentException(</span>
+<span class="source-line-no">087</span><span id="line-87">        "The " + key + " must be non-negative, current value is " + value);</span>
+<span class="source-line-no">088</span><span id="line-88">    }</span>
+<span class="source-line-no">089</span><span id="line-89">    return value;</span>
+<span class="source-line-no">090</span><span id="line-90">  }</span>
+<span class="source-line-no">091</span><span id="line-91"></span>
+<span class="source-line-no">092</span><span id="line-92">  /**</span>
+<span class="source-line-no">093</span><span id="line-93">   * Constructor</span>
+<span class="source-line-no">094</span><span id="line-94">   * @param conf Configuration object</span>
+<span class="source-line-no">095</span><span id="line-95">   */</span>
+<span class="source-line-no">096</span><span id="line-96">  ConnectionConfiguration(Configuration conf) {</span>
+<span class="source-line-no">097</span><span id="line-97">    this.writeBufferSize = conf.getLong(WRITE_BUFFER_SIZE_KEY, WRITE_BUFFER_SIZE_DEFAULT);</span>
+<span class="source-line-no">098</span><span id="line-98"></span>
+<span class="source-line-no">099</span><span id="line-99">    this.writeBufferPeriodicFlushTimeoutMs = conf.getLong(WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS,</span>
+<span class="source-line-no">100</span><span id="line-100">      WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT);</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">    this.writeBufferPeriodicFlushTimerTickMs = conf.getLong(</span>
+<span class="source-line-no">103</span><span id="line-103">      WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT);</span>
+<span class="source-line-no">104</span><span id="line-104"></span>
+<span class="source-line-no">105</span><span id="line-105">    this.operationTimeout = getNonNegativeInt(conf, HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
+<span class="source-line-no">106</span><span id="line-106">      HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);</span>
+<span class="source-line-no">107</span><span id="line-107"></span>
+<span class="source-line-no">108</span><span id="line-108">    this.metaOperationTimeout =</span>
+<span class="source-line-no">109</span><span id="line-109">      getNonNegativeInt(conf, HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, operationTimeout);</span>
+<span class="source-line-no">110</span><span id="line-110"></span>
+<span class="source-line-no">111</span><span id="line-111">    this.scannerCaching = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_CACHING,</span>
+<span class="source-line-no">112</span><span id="line-112">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING);</span>
+<span class="source-line-no">113</span><span id="line-113"></span>
+<span class="source-line-no">114</span><span id="line-114">    this.scannerMaxResultSize = conf.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,</span>
+<span class="source-line-no">115</span><span id="line-115">      HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);</span>
+<span class="source-line-no">116</span><span id="line-116"></span>
+<span class="source-line-no">117</span><span id="line-117">    this.primaryCallTimeoutMicroSecond = getNonNegativeInt(conf, PRIMARY_CALL_TIMEOUT_MICROSECOND,</span>
+<span class="source-line-no">118</span><span id="line-118">      PRIMARY_CALL_TIMEOUT_MICROSECOND_DEFAULT);</span>
+<span class="source-line-no">119</span><span id="line-119"></span>
+<span class="source-line-no">120</span><span id="line-120">    this.replicaCallTimeoutMicroSecondScan = getNonNegativeInt(conf,</span>
+<span class="source-line-no">121</span><span id="line-121">      PRIMARY_SCAN_TIMEOUT_MICROSECOND, PRIMARY_SCAN_TIMEOUT_MICROSECOND_DEFAULT);</span>
+<span class="source-line-no">122</span><span id="line-122"></span>
+<span class="source-line-no">123</span><span id="line-123">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
+<span class="source-line-no">124</span><span id="line-124">      getNonNegativeInt(conf, HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT,</span>
+<span class="source-line-no">125</span><span id="line-125">        HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT);</span>
 <span class="source-line-no">126</span><span id="line-126"></span>
-<span class="source-line-no">127</span><span id="line-127">    this.bufferedMutatorMaxMutations =</span>
-<span class="source-line-no">128</span><span id="line-128">      conf.getInt(BUFFERED_MUTATOR_MAX_MUTATIONS_KEY, BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT);</span>
+<span class="source-line-no">127</span><span id="line-127">    this.retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,</span>
+<span class="source-line-no">128</span><span id="line-128">      HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);</span>
 <span class="source-line-no">129</span><span id="line-129"></span>
-<span class="source-line-no">130</span><span id="line-130">    this.rpcTimeout =</span>
-<span class="source-line-no">131</span><span id="line-131">      conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT);</span>
+<span class="source-line-no">130</span><span id="line-130">    this.clientScannerAsyncPrefetch = conf.getBoolean(Scan.HBASE_CLIENT_SCANNER_ASYNC_PREFETCH,</span>
+<span class="source-line-no">131</span><span id="line-131">      Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH);</span>
 <span class="source-line-no">132</span><span id="line-132"></span>
-<span class="source-line-no">133</span><span id="line-133">    this.readRpcTimeout = conf.getInt(HConstants.HBASE_RPC_READ_TIMEOUT_KEY,</span>
-<span class="source-line-no">134</span><span id="line-134">      conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT));</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136">    this.metaReadRpcTimeout = conf.getInt(HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, readRpcTimeout);</span>
+<span class="source-line-no">133</span><span id="line-133">    this.maxKeyValueSize = conf.getInt(MAX_KEYVALUE_SIZE_KEY, MAX_KEYVALUE_SIZE_DEFAULT);</span>
+<span class="source-line-no">134</span><span id="line-134"></span>
+<span class="source-line-no">135</span><span id="line-135">    this.bufferedMutatorMaxMutations =</span>
+<span class="source-line-no">136</span><span id="line-136">      conf.getInt(BUFFERED_MUTATOR_MAX_MUTATIONS_KEY, BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT);</span>
 <span class="source-line-no">137</span><span id="line-137"></span>
-<span class="source-line-no">138</span><span id="line-138">    this.writeRpcTimeout = conf.getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,</span>
-<span class="source-line-no">139</span><span id="line-139">      conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT));</span>
-<span class="source-line-no">140</span><span id="line-140">  }</span>
-<span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142">  /**</span>
-<span class="source-line-no">143</span><span id="line-143">   * Constructor This is for internal testing purpose (using the default value). In real usage, we</span>
-<span class="source-line-no">144</span><span id="line-144">   * should read the configuration from the Configuration object.</span>
-<span class="source-line-no">145</span><span id="line-145">   */</span>
-<span class="source-line-no">146</span><span id="line-146">  protected ConnectionConfiguration() {</span>
-<span class="source-line-no">147</span><span id="line-147">    this.writeBufferSize = WRITE_BUFFER_SIZE_DEFAULT;</span>
-<span class="source-line-no">148</span><span id="line-148">    this.writeBufferPeriodicFlushTimeoutMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT;</span>
-<span class="source-line-no">149</span><span id="line-149">    this.writeBufferPeriodicFlushTimerTickMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT;</span>
-<span class="source-line-no">150</span><span id="line-150">    this.metaOperationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
-<span class="source-line-no">151</span><span id="line-151">    this.operationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
-<span class="source-line-no">152</span><span id="line-152">    this.scannerCaching = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING;</span>
-<span class="source-line-no">153</span><span id="line-153">    this.scannerMaxResultSize = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE;</span>
-<span class="source-line-no">154</span><span id="line-154">    this.primaryCallTimeoutMicroSecond = 10000;</span>
-<span class="source-line-no">155</span><span id="line-155">    this.replicaCallTimeoutMicroSecondScan = 1000000;</span>
-<span class="source-line-no">156</span><span id="line-156">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
-<span class="source-line-no">157</span><span id="line-157">      HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT;</span>
-<span class="source-line-no">158</span><span id="line-158">    this.retries = HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER;</span>
-<span class="source-line-no">159</span><span id="line-159">    this.clientScannerAsyncPrefetch = Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH;</span>
-<span class="source-line-no">160</span><span id="line-160">    this.maxKeyValueSize = MAX_KEYVALUE_SIZE_DEFAULT;</span>
-<span class="source-line-no">161</span><span id="line-161">    this.bufferedMutatorMaxMutations = BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT;</span>
-<span class="source-line-no">162</span><span id="line-162">    this.readRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">163</span><span id="line-163">    this.metaReadRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">164</span><span id="line-164">    this.writeRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">165</span><span id="line-165">    this.rpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
-<span class="source-line-no">166</span><span id="line-166">  }</span>
-<span class="source-line-no">167</span><span id="line-167"></span>
-<span class="source-line-no">168</span><span id="line-168">  public int getReadRpcTimeout() {</span>
-<span class="source-line-no">169</span><span id="line-169">    return readRpcTimeout;</span>
-<span class="source-line-no">170</span><span id="line-170">  }</span>
-<span class="source-line-no">171</span><span id="line-171"></span>
-<span class="source-line-no">172</span><span id="line-172">  public int getMetaReadRpcTimeout() {</span>
-<span class="source-line-no">173</span><span id="line-173">    return metaReadRpcTimeout;</span>
-<span class="source-line-no">174</span><span id="line-174">  }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176">  public int getWriteRpcTimeout() {</span>
-<span class="source-line-no">177</span><span id="line-177">    return writeRpcTimeout;</span>
-<span class="source-line-no">178</span><span id="line-178">  }</span>
-<span class="source-line-no">179</span><span id="line-179"></span>
-<span class="source-line-no">180</span><span id="line-180">  public long getWriteBufferSize() {</span>
-<span class="source-line-no">181</span><span id="line-181">    return writeBufferSize;</span>
-<span class="source-line-no">182</span><span id="line-182">  }</span>
-<span class="source-line-no">183</span><span id="line-183"></span>
-<span class="source-line-no">184</span><span id="line-184">  public long getWriteBufferPeriodicFlushTimeoutMs() {</span>
-<span class="source-line-no">185</span><span id="line-185">    return writeBufferPeriodicFlushTimeoutMs;</span>
-<span class="source-line-no">186</span><span id="line-186">  }</span>
-<span class="source-line-no">187</span><span id="line-187"></span>
-<span class="source-line-no">188</span><span id="line-188">  public long getWriteBufferPeriodicFlushTimerTickMs() {</span>
-<span class="source-line-no">189</span><span id="line-189">    return writeBufferPeriodicFlushTimerTickMs;</span>
-<span class="source-line-no">190</span><span id="line-190">  }</span>
-<span class="source-line-no">191</span><span id="line-191"></span>
-<span class="source-line-no">192</span><span id="line-192">  public int getMetaOperationTimeout() {</span>
-<span class="source-line-no">193</span><span id="line-193">    return metaOperationTimeout;</span>
-<span class="source-line-no">194</span><span id="line-194">  }</span>
-<span class="source-line-no">195</span><span id="line-195"></span>
-<span class="source-line-no">196</span><span id="line-196">  public int getOperationTimeout() {</span>
-<span class="source-line-no">197</span><span id="line-197">    return operationTimeout;</span>
-<span class="source-line-no">198</span><span id="line-198">  }</span>
-<span class="source-line-no">199</span><span id="line-199"></span>
-<span class="source-line-no">200</span><span id="line-200">  public int getScannerCaching() {</span>
-<span class="source-line-no">201</span><span id="line-201">    return scannerCaching;</span>
-<span class="source-line-no">202</span><span id="line-202">  }</span>
-<span class="source-line-no">203</span><span id="line-203"></span>
-<span class="source-line-no">204</span><span id="line-204">  public int getPrimaryCallTimeoutMicroSecond() {</span>
-<span class="source-line-no">205</span><span id="line-205">    return primaryCallTimeoutMicroSecond;</span>
-<span class="source-line-no">206</span><span id="line-206">  }</span>
-<span class="source-line-no">207</span><span id="line-207"></span>
-<span class="source-line-no">208</span><span id="line-208">  public int getReplicaCallTimeoutMicroSecondScan() {</span>
-<span class="source-line-no">209</span><span id="line-209">    return replicaCallTimeoutMicroSecondScan;</span>
-<span class="source-line-no">210</span><span id="line-210">  }</span>
-<span class="source-line-no">211</span><span id="line-211"></span>
-<span class="source-line-no">212</span><span id="line-212">  public int getMetaReplicaCallTimeoutMicroSecondScan() {</span>
-<span class="source-line-no">213</span><span id="line-213">    return metaReplicaCallTimeoutMicroSecondScan;</span>
-<span class="source-line-no">214</span><span id="line-214">  }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216">  public int getRetriesNumber() {</span>
-<span class="source-line-no">217</span><span id="line-217">    return retries;</span>
-<span class="source-line-no">218</span><span id="line-218">  }</span>
-<span class="source-line-no">219</span><span id="line-219"></span>
-<span class="source-line-no">220</span><span id="line-220">  public int getMaxKeyValueSize() {</span>
-<span class="source-line-no">221</span><span id="line-221">    return maxKeyValueSize;</span>
-<span class="source-line-no">222</span><span id="line-222">  }</span>
-<span class="source-line-no">223</span><span id="line-223"></span>
-<span class="source-line-no">224</span><span id="line-224">  public int getBufferedMutatorMaxMutations() {</span>
-<span class="source-line-no">225</span><span id="line-225">    return bufferedMutatorMaxMutations;</span>
-<span class="source-line-no">226</span><span id="line-226">  }</span>
-<span class="source-line-no">227</span><span id="line-227"></span>
-<span class="source-line-no">228</span><span id="line-228">  public long getScannerMaxResultSize() {</span>
-<span class="source-line-no">229</span><span id="line-229">    return scannerMaxResultSize;</span>
-<span class="source-line-no">230</span><span id="line-230">  }</span>
-<span class="source-line-no">231</span><span id="line-231"></span>
-<span class="source-line-no">232</span><span id="line-232">  public boolean isClientScannerAsyncPrefetch() {</span>
-<span class="source-line-no">233</span><span id="line-233">    return clientScannerAsyncPrefetch;</span>
-<span class="source-line-no">234</span><span id="line-234">  }</span>
-<span class="source-line-no">235</span><span id="line-235"></span>
-<span class="source-line-no">236</span><span id="line-236">  public int getRpcTimeout() {</span>
-<span class="source-line-no">237</span><span id="line-237">    return rpcTimeout;</span>
-<span class="source-line-no">238</span><span id="line-238">  }</span>
-<span class="source-line-no">239</span><span id="line-239">}</span>
+<span class="source-line-no">138</span><span id="line-138">    this.rpcTimeout = getNonNegativeInt(conf, HConstants.HBASE_RPC_TIMEOUT_KEY,</span>
+<span class="source-line-no">139</span><span id="line-139">      HConstants.DEFAULT_HBASE_RPC_TIMEOUT);</span>
+<span class="source-line-no">140</span><span id="line-140"></span>
+<span class="source-line-no">141</span><span id="line-141">    this.readRpcTimeout =</span>
+<span class="source-line-no">142</span><span id="line-142">      getNonNegativeInt(conf, HConstants.HBASE_RPC_READ_TIMEOUT_KEY, rpcTimeout);</span>
+<span class="source-line-no">143</span><span id="line-143"></span>
+<span class="source-line-no">144</span><span id="line-144">    this.metaReadRpcTimeout =</span>
+<span class="source-line-no">145</span><span id="line-145">      getNonNegativeInt(conf, HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, readRpcTimeout);</span>
+<span class="source-line-no">146</span><span id="line-146"></span>
+<span class="source-line-no">147</span><span id="line-147">    this.writeRpcTimeout =</span>
+<span class="source-line-no">148</span><span id="line-148">      getNonNegativeInt(conf, HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY, rpcTimeout);</span>
+<span class="source-line-no">149</span><span id="line-149">  }</span>
+<span class="source-line-no">150</span><span id="line-150"></span>
+<span class="source-line-no">151</span><span id="line-151">  /**</span>
+<span class="source-line-no">152</span><span id="line-152">   * Constructor This is for internal testing purpose (using the default value). In real usage, we</span>
+<span class="source-line-no">153</span><span id="line-153">   * should read the configuration from the Configuration object.</span>
+<span class="source-line-no">154</span><span id="line-154">   */</span>
+<span class="source-line-no">155</span><span id="line-155">  protected ConnectionConfiguration() {</span>
+<span class="source-line-no">156</span><span id="line-156">    this.writeBufferSize = WRITE_BUFFER_SIZE_DEFAULT;</span>
+<span class="source-line-no">157</span><span id="line-157">    this.writeBufferPeriodicFlushTimeoutMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMEOUT_MS_DEFAULT;</span>
+<span class="source-line-no">158</span><span id="line-158">    this.writeBufferPeriodicFlushTimerTickMs = WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS_DEFAULT;</span>
+<span class="source-line-no">159</span><span id="line-159">    this.metaOperationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
+<span class="source-line-no">160</span><span id="line-160">    this.operationTimeout = HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT;</span>
+<span class="source-line-no">161</span><span id="line-161">    this.scannerCaching = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING;</span>
+<span class="source-line-no">162</span><span id="line-162">    this.scannerMaxResultSize = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE;</span>
+<span class="source-line-no">163</span><span id="line-163">    this.primaryCallTimeoutMicroSecond = 10000;</span>
+<span class="source-line-no">164</span><span id="line-164">    this.replicaCallTimeoutMicroSecondScan = 1000000;</span>
+<span class="source-line-no">165</span><span id="line-165">    this.metaReplicaCallTimeoutMicroSecondScan =</span>
+<span class="source-line-no">166</span><span id="line-166">      HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT;</span>
+<span class="source-line-no">167</span><span id="line-167">    this.retries = HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER;</span>
+<span class="source-line-no">168</span><span id="line-168">    this.clientScannerAsyncPrefetch = Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH;</span>
+<span class="source-line-no">169</span><span id="line-169">    this.maxKeyValueSize = MAX_KEYVALUE_SIZE_DEFAULT;</span>
+<span class="source-line-no">170</span><span id="line-170">    this.bufferedMutatorMaxMutations = BUFFERED_MUTATOR_MAX_MUTATIONS_DEFAULT;</span>
+<span class="source-line-no">171</span><span id="line-171">    this.readRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">172</span><span id="line-172">    this.metaReadRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">173</span><span id="line-173">    this.writeRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">174</span><span id="line-174">    this.rpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;</span>
+<span class="source-line-no">175</span><span id="line-175">  }</span>
+<span class="source-line-no">176</span><span id="line-176"></span>
+<span class="source-line-no">177</span><span id="line-177">  public int getReadRpcTimeout() {</span>
+<span class="source-line-no">178</span><span id="line-178">    return readRpcTimeout;</span>
+<span class="source-line-no">179</span><span id="line-179">  }</span>
+<span class="source-line-no">180</span><span id="line-180"></span>
+<span class="source-line-no">181</span><span id="line-181">  public int getMetaReadRpcTimeout() {</span>
+<span class="source-line-no">182</span><span id="line-182">    return metaReadRpcTimeout;</span>
+<span class="source-line-no">183</span><span id="line-183">  }</span>
+<span class="source-line-no">184</span><span id="line-184"></span>
+<span class="source-line-no">185</span><span id="line-185">  public int getWriteRpcTimeout() {</span>
+<span class="source-line-no">186</span><span id="line-186">    return writeRpcTimeout;</span>
+<span class="source-line-no">187</span><span id="line-187">  }</span>
+<span class="source-line-no">188</span><span id="line-188"></span>
+<span class="source-line-no">189</span><span id="line-189">  public long getWriteBufferSize() {</span>
+<span class="source-line-no">190</span><span id="line-190">    return writeBufferSize;</span>
+<span class="source-line-no">191</span><span id="line-191">  }</span>
+<span class="source-line-no">192</span><span id="line-192"></span>
+<span class="source-line-no">193</span><span id="line-193">  public long getWriteBufferPeriodicFlushTimeoutMs() {</span>
+<span class="source-line-no">194</span><span id="line-194">    return writeBufferPeriodicFlushTimeoutMs;</span>
+<span class="source-line-no">195</span><span id="line-195">  }</span>
+<span class="source-line-no">196</span><span id="line-196"></span>
+<span class="source-line-no">197</span><span id="line-197">  public long getWriteBufferPeriodicFlushTimerTickMs() {</span>
+<span class="source-line-no">198</span><span id="line-198">    return writeBufferPeriodicFlushTimerTickMs;</span>
+<span class="source-line-no">199</span><span id="line-199">  }</span>
+<span class="source-line-no">200</span><span id="line-200"></span>
+<span class="source-line-no">201</span><span id="line-201">  public int getMetaOperationTimeout() {</span>
+<span class="source-line-no">202</span><span id="line-202">    return metaOperationTimeout;</span>
+<span class="source-line-no">203</span><span id="line-203">  }</span>
+<span class="source-line-no">204</span><span id="line-204"></span>
+<span class="source-line-no">205</span><span id="line-205">  public int getOperationTimeout() {</span>
+<span class="source-line-no">206</span><span id="line-206">    return operationTimeout;</span>
+<span class="source-line-no">207</span><span id="line-207">  }</span>
+<span class="source-line-no">208</span><span id="line-208"></span>
+<span class="source-line-no">209</span><span id="line-209">  public int getScannerCaching() {</span>
+<span class="source-line-no">210</span><span id="line-210">    return scannerCaching;</span>
+<span class="source-line-no">211</span><span id="line-211">  }</span>
+<span class="source-line-no">212</span><span id="line-212"></span>
+<span class="source-line-no">213</span><span id="line-213">  public int getPrimaryCallTimeoutMicroSecond() {</span>
+<span class="source-line-no">214</span><span id="line-214">    return primaryCallTimeoutMicroSecond;</span>
+<span class="source-line-no">215</span><span id="line-215">  }</span>
+<span class="source-line-no">216</span><span id="line-216"></span>
+<span class="source-line-no">217</span><span id="line-217">  public int getReplicaCallTimeoutMicroSecondScan() {</span>
+<span class="source-line-no">218</span><span id="line-218">    return replicaCallTimeoutMicroSecondScan;</span>
+<span class="source-line-no">219</span><span id="line-219">  }</span>
+<span class="source-line-no">220</span><span id="line-220"></span>
+<span class="source-line-no">221</span><span id="line-221">  public int getMetaReplicaCallTimeoutMicroSecondScan() {</span>
+<span class="source-line-no">222</span><span id="line-222">    return metaReplicaCallTimeoutMicroSecondScan;</span>
+<span class="source-line-no">223</span><span id="line-223">  }</span>
+<span class="source-line-no">224</span><span id="line-224"></span>
+<span class="source-line-no">225</span><span id="line-225">  public int getRetriesNumber() {</span>
+<span class="source-line-no">226</span><span id="line-226">    return retries;</span>
+<span class="source-line-no">227</span><span id="line-227">  }</span>
+<span class="source-line-no">228</span><span id="line-228"></span>
+<span class="source-line-no">229</span><span id="line-229">  public int getMaxKeyValueSize() {</span>
+<span class="source-line-no">230</span><span id="line-230">    return maxKeyValueSize;</span>
+<span class="source-line-no">231</span><span id="line-231">  }</span>
+<span class="source-line-no">232</span><span id="line-232"></span>
+<span class="source-line-no">233</span><span id="line-233">  public int getBufferedMutatorMaxMutations() {</span>
+<span class="source-line-no">234</span><span id="line-234">    return bufferedMutatorMaxMutations;</span>
+<span class="source-line-no">235</span><span id="line-235">  }</span>
+<span class="source-line-no">236</span><span id="line-236"></span>
+<span class="source-line-no">237</span><span id="line-237">  public long getScannerMaxResultSize() {</span>
+<span class="source-line-no">238</span><span id="line-238">    return scannerMaxResultSize;</span>
+<span class="source-line-no">239</span><span id="line-239">  }</span>
+<span class="source-line-no">240</span><span id="line-240"></span>
+<span class="source-line-no">241</span><span id="line-241">  public boolean isClientScannerAsyncPrefetch() {</span>
+<span class="source-line-no">242</span><span id="line-242">    return clientScannerAsyncPrefetch;</span>
+<span class="source-line-no">243</span><span id="line-243">  }</span>
+<span class="source-line-no">244</span><span id="line-244"></span>
+<span class="source-line-no">245</span><span id="line-245">  public int getRpcTimeout() {</span>
+<span class="source-line-no">246</span><span id="line-246">    return rpcTimeout;</span>
+<span class="source-line-no">247</span><span id="line-247">  }</span>
+<span class="source-line-no">248</span><span id="line-248">}</span>
 
 
 
diff --git a/hbase-website/dependency-convergence.html b/hbase-website/dependency-convergence.html
index b70897f696e..3df7046291d 100644
--- a/hbase-website/dependency-convergence.html
+++ b/hbase-website/dependency-convergence.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-info.html b/hbase-website/dependency-info.html
index 67dc56666c7..cdadd4fdeea 100644
--- a/hbase-website/dependency-info.html
+++ b/hbase-website/dependency-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/dependency-management.html b/hbase-website/dependency-management.html
index 6c12b690b30..03d0298c945 100644
--- a/hbase-website/dependency-management.html
+++ b/hbase-website/dependency-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/index.html b/hbase-website/index.html
index 861fb72bfbd..b6d8bcae215 100644
--- a/hbase-website/index.html
+++ b/hbase-website/index.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/issue-management.html b/hbase-website/issue-management.html
index 9b869613c20..1bf2faf2368 100644
--- a/hbase-website/issue-management.html
+++ b/hbase-website/issue-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/licenses.html b/hbase-website/licenses.html
index ab61d65dcc6..1973525d381 100644
--- a/hbase-website/licenses.html
+++ b/hbase-website/licenses.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/mailing-lists.html b/hbase-website/mailing-lists.html
index 0975bb3b127..31671d431cb 100644
--- a/hbase-website/mailing-lists.html
+++ b/hbase-website/mailing-lists.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/plugin-management.html b/hbase-website/plugin-management.html
index 606e2364d5c..9f0c20f1585 100644
--- a/hbase-website/plugin-management.html
+++ b/hbase-website/plugin-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/plugins.html b/hbase-website/plugins.html
index 3cead18bab7..d808266a75f 100644
--- a/hbase-website/plugins.html
+++ b/hbase-website/plugins.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/project-info.html b/hbase-website/project-info.html
index ae6071295fa..9adba1ff162 100644
--- a/hbase-website/project-info.html
+++ b/hbase-website/project-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/scm.html b/hbase-website/scm.html
index f089c7a3b3e..82d31f9a4c8 100644
--- a/hbase-website/scm.html
+++ b/hbase-website/scm.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/summary.html b/hbase-website/summary.html
index 7408f3835e0..eba74fdf57f 100644
--- a/hbase-website/summary.html
+++ b/hbase-website/summary.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/hbase-website/team.html b/hbase-website/team.html
index ff0562d7862..d243b950486 100644
--- a/hbase-website/team.html
+++ b/hbase-website/team.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/issue-management.html b/issue-management.html
index 7849837b1c5..adb2cac5deb 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/licenses.html b/licenses.html
index 071d8e59bf1..2e8dd06cde8 100644
--- a/licenses.html
+++ b/licenses.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/mailing-lists.html b/mailing-lists.html
index 8e1a2453b3e..5c074fb367f 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/plugin-management.html b/plugin-management.html
index be488a3b9e5..60341c10b20 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/plugins.html b/plugins.html
index ae1b6ae5709..9e2019e2f5f 100644
--- a/plugins.html
+++ b/plugins.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/project-info.html b/project-info.html
index e41e9e1856b..abe11cb07df 100644
--- a/project-info.html
+++ b/project-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/project-reports.html b/project-reports.html
index 5c118849f53..1d317b712bb 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/scm.html b/scm.html
index fa3c66c2466..eaff9ad0910 100644
--- a/scm.html
+++ b/scm.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/summary.html b/summary.html
index 736bc84e0e3..17d0d9f73e2 100644
--- a/summary.html
+++ b/summary.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/team.html b/team.html
index ed1c7cd67db..730b10f9710 100644
--- a/team.html
+++ b/team.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-08-25
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 2026-08-26
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index 910b02b593e..eabf00d4456 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -34901,6 +34901,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/util/TestReservoirSample.html#testNegativeSamplingNumber()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.util">testNegativeSamplingNumber()</a> - Method in class org.apache.hadoop.hbase.util.<a href="../apidocs/org/apache/hadoop/hbase/util/TestReservoirSample.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">TestReservoirSample</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#testNegativeTimeoutsThrow()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">testNegativeTimeoutsThrow()</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionConfiguratio [...]
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestClientDataStructureMisc.html#testNegativeTimestamp()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">testNegativeTimestamp()</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestClientDataStructureMisc.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestClientDataStructureMisc</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html#testNegativeTimestamps()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.io.encoding">testNegativeTimestamps()</a> - Method in class org.apache.hadoop.hbase.io.encoding.<a href="../apidocs/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class or interface in org.apache.hadoop.hbase.io.encoding" class="external-link">TestDataBlockEncode [...]
@@ -44383,6 +44385,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.html#testZeroFileLength()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver.storefiletracker">testZeroFileLength()</a> - Method in class org.apache.hadoop.hbase.regionserver.storefiletracker.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.html" title="class or interface in org.apache.had [...]
 <dd>&nbsp;</dd>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#testZeroTimeoutsAreAllowed()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">testZeroTimeoutsAreAllowed()</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestConnectionConfigurat [...]
+<dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/TestPerformanceEvaluation.html#testZipfian()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">testZipfian()</a> - Method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/TestPerformanceEvaluation.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/zookeeper/TestZKConfig.html" class="type-name-link external-link" title="class or interface in org.apache.hadoop.hbase.zookeeper">TestZKConfig</a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
diff --git a/testapidocs/member-search-index.js b/testapidocs/member-search-index.js
index 510c6edf294..38a7528d39a 100644
--- a/testapidocs/member-search-index.js
+++ b/testapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"TestRegionObserverInterface","l":"A"},{"p":"org.apache.hadoop.hbase.client","c":"TestGetProcedureResult.DummyProcedure","l":"abort(MasterProcedureEnv)","u":"abort(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)"},{"p":"org.apache.hadoop.hbase.master","c":"TestMigrateNamespaceTable.SuspendProcedure","l" [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"TestRegionObserverInterface","l":"A"},{"p":"org.apache.hadoop.hbase.client","c":"TestGetProcedureResult.DummyProcedure","l":"abort(MasterProcedureEnv)","u":"abort(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)"},{"p":"org.apache.hadoop.hbase.master","c":"TestMigrateNamespaceTable.SuspendProcedure","l" [...]
\ No newline at end of file
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html b/testapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
index 4c9a077933a..f3d06978086 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
@@ -31,33 +31,82 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.client;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
-<span class="source-line-no">021</span><span id="line-21"></span>
-<span class="source-line-no">022</span><span id="line-22">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.testclassification.ClientTests;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.junit.jupiter.api.Tag;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.junit.jupiter.api.Test;</span>
-<span class="source-line-no">029</span><span id="line-29"></span>
-<span class="source-line-no">030</span><span id="line-30">/**</span>
-<span class="source-line-no">031</span><span id="line-31"> * See HBASE-28608. Configuration tests for (non async) connections</span>
-<span class="source-line-no">032</span><span id="line-32"> */</span>
-<span class="source-line-no">033</span><span id="line-33">@Tag(ClientTests.TAG)</span>
-<span class="source-line-no">034</span><span id="line-34">@Tag(SmallTests.TAG)</span>
-<span class="source-line-no">035</span><span id="line-35">public class TestConnectionConfiguration {</span>
-<span class="source-line-no">036</span><span id="line-36"></span>
-<span class="source-line-no">037</span><span id="line-37">  @Test</span>
-<span class="source-line-no">038</span><span id="line-38">  public void testDefaultMetaOperationTimeout() {</span>
-<span class="source-line-no">039</span><span id="line-39">    Configuration conf = HBaseConfiguration.create();</span>
-<span class="source-line-no">040</span><span id="line-40">    long clientOperationTimeoutMs = 1000;</span>
-<span class="source-line-no">041</span><span id="line-41">    conf.setLong(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, clientOperationTimeoutMs);</span>
-<span class="source-line-no">042</span><span id="line-42">    ConnectionConfiguration config = new ConnectionConfiguration(conf);</span>
-<span class="source-line-no">043</span><span id="line-43">    assertEquals(clientOperationTimeoutMs, config.getOperationTimeout());</span>
-<span class="source-line-no">044</span><span id="line-44">    assertEquals(clientOperationTimeoutMs, config.getMetaOperationTimeout());</span>
-<span class="source-line-no">045</span><span id="line-45">  }</span>
-<span class="source-line-no">046</span><span id="line-46"></span>
-<span class="source-line-no">047</span><span id="line-47">}</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertThrows;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import java.util.Arrays;</span>
+<span class="source-line-no">025</span><span id="line-25">import java.util.List;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.testclassification.ClientTests;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">033</span><span id="line-33"></span>
+<span class="source-line-no">034</span><span id="line-34">/**</span>
+<span class="source-line-no">035</span><span id="line-35"> * See HBASE-28608. Configuration tests for (non async) connections</span>
+<span class="source-line-no">036</span><span id="line-36"> */</span>
+<span class="source-line-no">037</span><span id="line-37">@Tag(ClientTests.TAG)</span>
+<span class="source-line-no">038</span><span id="line-38">@Tag(SmallTests.TAG)</span>
+<span class="source-line-no">039</span><span id="line-39">public class TestConnectionConfiguration {</span>
+<span class="source-line-no">040</span><span id="line-40"></span>
+<span class="source-line-no">041</span><span id="line-41">  @Test</span>
+<span class="source-line-no">042</span><span id="line-42">  public void testDefaultMetaOperationTimeout() {</span>
+<span class="source-line-no">043</span><span id="line-43">    Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">044</span><span id="line-44">    long clientOperationTimeoutMs = 1000;</span>
+<span class="source-line-no">045</span><span id="line-45">    conf.setLong(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, clientOperationTimeoutMs);</span>
+<span class="source-line-no">046</span><span id="line-46">    ConnectionConfiguration config = new ConnectionConfiguration(conf);</span>
+<span class="source-line-no">047</span><span id="line-47">    assertEquals(clientOperationTimeoutMs, config.getOperationTimeout());</span>
+<span class="source-line-no">048</span><span id="line-48">    assertEquals(clientOperationTimeoutMs, config.getMetaOperationTimeout());</span>
+<span class="source-line-no">049</span><span id="line-49">  }</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">  @Test</span>
+<span class="source-line-no">052</span><span id="line-52">  public void testNegativeTimeoutsThrow() {</span>
+<span class="source-line-no">053</span><span id="line-53">    List&lt;String&gt; timeoutKeys = Arrays.asList(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT,</span>
+<span class="source-line-no">054</span><span id="line-54">      HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
+<span class="source-line-no">055</span><span id="line-55">      ConnectionConfiguration.PRIMARY_CALL_TIMEOUT_MICROSECOND,</span>
+<span class="source-line-no">056</span><span id="line-56">      ConnectionConfiguration.PRIMARY_SCAN_TIMEOUT_MICROSECOND,</span>
+<span class="source-line-no">057</span><span id="line-57">      HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT, HConstants.HBASE_RPC_TIMEOUT_KEY,</span>
+<span class="source-line-no">058</span><span id="line-58">      HConstants.HBASE_RPC_READ_TIMEOUT_KEY,</span>
+<span class="source-line-no">059</span><span id="line-59">      ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY,</span>
+<span class="source-line-no">060</span><span id="line-60">      HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY);</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">    for (String key : timeoutKeys) {</span>
+<span class="source-line-no">063</span><span id="line-63">      Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">064</span><span id="line-64">      conf.setInt(key, -1);</span>
+<span class="source-line-no">065</span><span id="line-65">      IllegalArgumentException error =</span>
+<span class="source-line-no">066</span><span id="line-66">        assertThrows(IllegalArgumentException.class, () -&gt; new ConnectionConfiguration(conf), key);</span>
+<span class="source-line-no">067</span><span id="line-67">      assertTrue(error.getMessage().contains(key), key);</span>
+<span class="source-line-no">068</span><span id="line-68">    }</span>
+<span class="source-line-no">069</span><span id="line-69">  }</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">  @Test</span>
+<span class="source-line-no">072</span><span id="line-72">  public void testZeroTimeoutsAreAllowed() {</span>
+<span class="source-line-no">073</span><span id="line-73">    Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">074</span><span id="line-74">    conf.setInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, 0);</span>
+<span class="source-line-no">075</span><span id="line-75">    conf.setInt(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, 0);</span>
+<span class="source-line-no">076</span><span id="line-76">    conf.setInt(ConnectionConfiguration.PRIMARY_CALL_TIMEOUT_MICROSECOND, 0);</span>
+<span class="source-line-no">077</span><span id="line-77">    conf.setInt(ConnectionConfiguration.PRIMARY_SCAN_TIMEOUT_MICROSECOND, 0);</span>
+<span class="source-line-no">078</span><span id="line-78">    conf.setInt(HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT, 0);</span>
+<span class="source-line-no">079</span><span id="line-79">    conf.setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">080</span><span id="line-80">    conf.setInt(HConstants.HBASE_RPC_READ_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">081</span><span id="line-81">    conf.setInt(ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">082</span><span id="line-82">    conf.setInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">083</span><span id="line-83"></span>
+<span class="source-line-no">084</span><span id="line-84">    ConnectionConfiguration config = new ConnectionConfiguration(conf);</span>
+<span class="source-line-no">085</span><span id="line-85">    assertEquals(0, config.getOperationTimeout());</span>
+<span class="source-line-no">086</span><span id="line-86">    assertEquals(0, config.getMetaOperationTimeout());</span>
+<span class="source-line-no">087</span><span id="line-87">    assertEquals(0, config.getPrimaryCallTimeoutMicroSecond());</span>
+<span class="source-line-no">088</span><span id="line-88">    assertEquals(0, config.getReplicaCallTimeoutMicroSecondScan());</span>
+<span class="source-line-no">089</span><span id="line-89">    assertEquals(0, config.getMetaReplicaCallTimeoutMicroSecondScan());</span>
+<span class="source-line-no">090</span><span id="line-90">    assertEquals(0, config.getRpcTimeout());</span>
+<span class="source-line-no">091</span><span id="line-91">    assertEquals(0, config.getReadRpcTimeout());</span>
+<span class="source-line-no">092</span><span id="line-92">    assertEquals(0, config.getMetaReadRpcTimeout());</span>
+<span class="source-line-no">093</span><span id="line-93">    assertEquals(0, config.getWriteRpcTimeout());</span>
+<span class="source-line-no">094</span><span id="line-94">  }</span>
+<span class="source-line-no">095</span><span id="line-95"></span>
+<span class="source-line-no">096</span><span id="line-96">}</span>
 
 
 
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 6d14214b810..382cca0db71 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -75001,6 +75001,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/TestReservoirSample.html#testNegativeSamplingNumber()" class="member-name-link">testNegativeSamplingNumber()</a> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestReservoirSample.html" title="class in org.apache.hadoop.hbase.util">TestReservoirSample</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#testNegativeTimeoutsThrow()" class="member-name-link">testNegativeTimeoutsThrow()</a> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestConnectionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestClientDataStructureMisc.html#testNegativeTimestamp()" class="member-name-link">testNegativeTimestamp()</a> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientDataStructureMisc.html" title="class in org.apache.hadoop.hbase.client">TestClientDataStructureMisc</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html#testNegativeTimestamps()" class="member-name-link">testNegativeTimestamps()</a> - Method in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding">TestDataBlockEncoders</a></dt>
@@ -88999,6 +89001,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.html#testZeroFileLength()" class="member-name-link">testZeroFileLength()</a> - Method in class org.apache.hadoop.hbase.regionserver.storefiletracker.<a href="org/apache/hadoop/hbase/regionserver/storefiletracker/TestStoreFileListFile.html" title="class in org.apache.hadoop.hbase.regionserver.storefiletracker">TestStoreFileListFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#testZeroTimeoutsAreAllowed()" class="member-name-link">testZeroTimeoutsAreAllowed()</a> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestConnectionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/TestPerformanceEvaluation.html#testZipfian()" class="member-name-link">testZipfian()</a> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">TestPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/zookeeper/TestZKConfig.html" class="type-name-link" title="class in org.apache.hadoop.hbase.zookeeper">TestZKConfig</a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
diff --git a/testdevapidocs/member-search-index.js b/testdevapidocs/member-search-index.js
index bbfa1a22916..46da981229b 100644
--- a/testdevapidocs/member-search-index.js
+++ b/testdevapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_ARI"},{"p":"org.apache.hadoop.hbase.io","c":"TestHalfStoreFileReader","l":"_b(String)","u":"_b(java.lang.String)"},{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_BRI"},{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.regionserver","c":"TestBlocksScanned","l":"_testBlo [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_ARI"},{"p":"org.apache.hadoop.hbase.io","c":"TestHalfStoreFileReader","l":"_b(String)","u":"_b(java.lang.String)"},{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_BRI"},{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.regionserver","c":"TestBlocksScanned","l":"_testBlo [...]
\ No newline at end of file
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
index c8497f60b5e..fc5e3757e25 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
@@ -78,7 +78,7 @@ loadScripts(document, 'script');</script>
 <section class="class-description" id="class-description">
 <hr>
 <div class="type-signature"><span class="annotations">@Tag("org.apache.hadoop.hbase.testclassification.ClientTests") @Tag("org.apache.hadoop.hbase.testclassification.SmallTests")
-</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-33">TestConnectionConfiguration</a></span>
+</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-37">TestConnectionConfiguration</a></span>
 <span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
 <div class="block">See HBASE-28608. Configuration tests for (non async) connections</div>
 </section>
@@ -111,6 +111,12 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testDefaultMetaOperationTimeout()" class="member-name-link">testDefaultMetaOperationTimeout</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testNegativeTimeoutsThrow()" class="member-name-link">testNegativeTimeoutsThrow</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#testZeroTimeoutsAreAllowed()" class="member-name-link">testZeroTimeoutsAreAllowed</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 </div>
 </div>
 </div>
@@ -131,7 +137,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;()">
 <h3>TestConnectionConfiguration</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-35">TestConnectionConfiguration</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-39">TestConnectionConfiguration</a></span>()</div>
 </section>
 </li>
 </ul>
@@ -146,7 +152,21 @@ loadScripts(document, 'script');</script>
 <section class="detail" id="testDefaultMetaOperationTimeout()">
 <h3>testDefaultMetaOperationTimeout</h3>
 <div class="member-signature"><span class="annotations">@Test
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-37">testDefaultMetaOperationTimeout</a></span>()</div>
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-41">testDefaultMetaOperationTimeout</a></span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testNegativeTimeoutsThrow()">
+<h3>testNegativeTimeoutsThrow</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-51">testNegativeTimeoutsThrow</a></span>()</div>
+</section>
+</li>
+<li>
+<section class="detail" id="testZeroTimeoutsAreAllowed()">
+<h3>testZeroTimeoutsAreAllowed</h3>
+<div class="member-signature"><span class="annotations">@Test
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html#line-71">testZeroTimeoutsAreAllowed</a></span>()</div>
 </section>
 </li>
 </ul>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
index 4c9a077933a..f3d06978086 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestConnectionConfiguration.html
@@ -31,33 +31,82 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.client;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import static org.junit.jupiter.api.Assertions.assertEquals;</span>
-<span class="source-line-no">021</span><span id="line-21"></span>
-<span class="source-line-no">022</span><span id="line-22">import org.apache.hadoop.conf.Configuration;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.HConstants;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.testclassification.ClientTests;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.junit.jupiter.api.Tag;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.junit.jupiter.api.Test;</span>
-<span class="source-line-no">029</span><span id="line-29"></span>
-<span class="source-line-no">030</span><span id="line-30">/**</span>
-<span class="source-line-no">031</span><span id="line-31"> * See HBASE-28608. Configuration tests for (non async) connections</span>
-<span class="source-line-no">032</span><span id="line-32"> */</span>
-<span class="source-line-no">033</span><span id="line-33">@Tag(ClientTests.TAG)</span>
-<span class="source-line-no">034</span><span id="line-34">@Tag(SmallTests.TAG)</span>
-<span class="source-line-no">035</span><span id="line-35">public class TestConnectionConfiguration {</span>
-<span class="source-line-no">036</span><span id="line-36"></span>
-<span class="source-line-no">037</span><span id="line-37">  @Test</span>
-<span class="source-line-no">038</span><span id="line-38">  public void testDefaultMetaOperationTimeout() {</span>
-<span class="source-line-no">039</span><span id="line-39">    Configuration conf = HBaseConfiguration.create();</span>
-<span class="source-line-no">040</span><span id="line-40">    long clientOperationTimeoutMs = 1000;</span>
-<span class="source-line-no">041</span><span id="line-41">    conf.setLong(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, clientOperationTimeoutMs);</span>
-<span class="source-line-no">042</span><span id="line-42">    ConnectionConfiguration config = new ConnectionConfiguration(conf);</span>
-<span class="source-line-no">043</span><span id="line-43">    assertEquals(clientOperationTimeoutMs, config.getOperationTimeout());</span>
-<span class="source-line-no">044</span><span id="line-44">    assertEquals(clientOperationTimeoutMs, config.getMetaOperationTimeout());</span>
-<span class="source-line-no">045</span><span id="line-45">  }</span>
-<span class="source-line-no">046</span><span id="line-46"></span>
-<span class="source-line-no">047</span><span id="line-47">}</span>
+<span class="source-line-no">021</span><span id="line-21">import static org.junit.jupiter.api.Assertions.assertThrows;</span>
+<span class="source-line-no">022</span><span id="line-22">import static org.junit.jupiter.api.Assertions.assertTrue;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import java.util.Arrays;</span>
+<span class="source-line-no">025</span><span id="line-25">import java.util.List;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configuration;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseConfiguration;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.HConstants;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.testclassification.ClientTests;</span>
+<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
+<span class="source-line-no">031</span><span id="line-31">import org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">032</span><span id="line-32">import org.junit.jupiter.api.Test;</span>
+<span class="source-line-no">033</span><span id="line-33"></span>
+<span class="source-line-no">034</span><span id="line-34">/**</span>
+<span class="source-line-no">035</span><span id="line-35"> * See HBASE-28608. Configuration tests for (non async) connections</span>
+<span class="source-line-no">036</span><span id="line-36"> */</span>
+<span class="source-line-no">037</span><span id="line-37">@Tag(ClientTests.TAG)</span>
+<span class="source-line-no">038</span><span id="line-38">@Tag(SmallTests.TAG)</span>
+<span class="source-line-no">039</span><span id="line-39">public class TestConnectionConfiguration {</span>
+<span class="source-line-no">040</span><span id="line-40"></span>
+<span class="source-line-no">041</span><span id="line-41">  @Test</span>
+<span class="source-line-no">042</span><span id="line-42">  public void testDefaultMetaOperationTimeout() {</span>
+<span class="source-line-no">043</span><span id="line-43">    Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">044</span><span id="line-44">    long clientOperationTimeoutMs = 1000;</span>
+<span class="source-line-no">045</span><span id="line-45">    conf.setLong(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, clientOperationTimeoutMs);</span>
+<span class="source-line-no">046</span><span id="line-46">    ConnectionConfiguration config = new ConnectionConfiguration(conf);</span>
+<span class="source-line-no">047</span><span id="line-47">    assertEquals(clientOperationTimeoutMs, config.getOperationTimeout());</span>
+<span class="source-line-no">048</span><span id="line-48">    assertEquals(clientOperationTimeoutMs, config.getMetaOperationTimeout());</span>
+<span class="source-line-no">049</span><span id="line-49">  }</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">  @Test</span>
+<span class="source-line-no">052</span><span id="line-52">  public void testNegativeTimeoutsThrow() {</span>
+<span class="source-line-no">053</span><span id="line-53">    List&lt;String&gt; timeoutKeys = Arrays.asList(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT,</span>
+<span class="source-line-no">054</span><span id="line-54">      HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,</span>
+<span class="source-line-no">055</span><span id="line-55">      ConnectionConfiguration.PRIMARY_CALL_TIMEOUT_MICROSECOND,</span>
+<span class="source-line-no">056</span><span id="line-56">      ConnectionConfiguration.PRIMARY_SCAN_TIMEOUT_MICROSECOND,</span>
+<span class="source-line-no">057</span><span id="line-57">      HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT, HConstants.HBASE_RPC_TIMEOUT_KEY,</span>
+<span class="source-line-no">058</span><span id="line-58">      HConstants.HBASE_RPC_READ_TIMEOUT_KEY,</span>
+<span class="source-line-no">059</span><span id="line-59">      ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY,</span>
+<span class="source-line-no">060</span><span id="line-60">      HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY);</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">    for (String key : timeoutKeys) {</span>
+<span class="source-line-no">063</span><span id="line-63">      Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">064</span><span id="line-64">      conf.setInt(key, -1);</span>
+<span class="source-line-no">065</span><span id="line-65">      IllegalArgumentException error =</span>
+<span class="source-line-no">066</span><span id="line-66">        assertThrows(IllegalArgumentException.class, () -&gt; new ConnectionConfiguration(conf), key);</span>
+<span class="source-line-no">067</span><span id="line-67">      assertTrue(error.getMessage().contains(key), key);</span>
+<span class="source-line-no">068</span><span id="line-68">    }</span>
+<span class="source-line-no">069</span><span id="line-69">  }</span>
+<span class="source-line-no">070</span><span id="line-70"></span>
+<span class="source-line-no">071</span><span id="line-71">  @Test</span>
+<span class="source-line-no">072</span><span id="line-72">  public void testZeroTimeoutsAreAllowed() {</span>
+<span class="source-line-no">073</span><span id="line-73">    Configuration conf = HBaseConfiguration.create();</span>
+<span class="source-line-no">074</span><span id="line-74">    conf.setInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, 0);</span>
+<span class="source-line-no">075</span><span id="line-75">    conf.setInt(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, 0);</span>
+<span class="source-line-no">076</span><span id="line-76">    conf.setInt(ConnectionConfiguration.PRIMARY_CALL_TIMEOUT_MICROSECOND, 0);</span>
+<span class="source-line-no">077</span><span id="line-77">    conf.setInt(ConnectionConfiguration.PRIMARY_SCAN_TIMEOUT_MICROSECOND, 0);</span>
+<span class="source-line-no">078</span><span id="line-78">    conf.setInt(HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT, 0);</span>
+<span class="source-line-no">079</span><span id="line-79">    conf.setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">080</span><span id="line-80">    conf.setInt(HConstants.HBASE_RPC_READ_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">081</span><span id="line-81">    conf.setInt(ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">082</span><span id="line-82">    conf.setInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY, 0);</span>
+<span class="source-line-no">083</span><span id="line-83"></span>
+<span class="source-line-no">084</span><span id="line-84">    ConnectionConfiguration config = new ConnectionConfiguration(conf);</span>
+<span class="source-line-no">085</span><span id="line-85">    assertEquals(0, config.getOperationTimeout());</span>
+<span class="source-line-no">086</span><span id="line-86">    assertEquals(0, config.getMetaOperationTimeout());</span>
+<span class="source-line-no">087</span><span id="line-87">    assertEquals(0, config.getPrimaryCallTimeoutMicroSecond());</span>
+<span class="source-line-no">088</span><span id="line-88">    assertEquals(0, config.getReplicaCallTimeoutMicroSecondScan());</span>
+<span class="source-line-no">089</span><span id="line-89">    assertEquals(0, config.getMetaReplicaCallTimeoutMicroSecondScan());</span>
+<span class="source-line-no">090</span><span id="line-90">    assertEquals(0, config.getRpcTimeout());</span>
+<span class="source-line-no">091</span><span id="line-91">    assertEquals(0, config.getReadRpcTimeout());</span>
+<span class="source-line-no">092</span><span id="line-92">    assertEquals(0, config.getMetaReadRpcTimeout());</span>
+<span class="source-line-no">093</span><span id="line-93">    assertEquals(0, config.getWriteRpcTimeout());</span>
+<span class="source-line-no">094</span><span id="line-94">  }</span>
+<span class="source-line-no">095</span><span id="line-95"></span>
+<span class="source-line-no">096</span><span id="line-96">}</span>