[
https://issues.apache.org/jira/browse/HBASE-15866?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Purtell updated HBASE-15866:
-----------------------------------
Attachment: HBASE-15866.patch
Patch for master rebased on recent changes.
Reviewboard: https://reviews.apache.org/r/50869/
Also fixes TestHCM#testCallableSleep
The following methods are *added* to Table:
{code}
int getReadRpcTimeout();
void setReadRpcTimeout(int readRpcTimeout);
int getWriteRpcTimeout();
void setWriteRpcTimeout(int writeRpcTimeout);
{code}
The following methods are *deprecated* in Table:
{code}
int getRpcTimeout();
void setRpcTimeout(int rpcTimeout);
{code}
This change targets master, branch-1, and 0.98.
In 0.98, we will not be changing HTableInterface but will be adding the new
methods to HTable.
> Split hbase.rpc.timeout into *.read.timeout and *.write.timeout
> ---------------------------------------------------------------
>
> Key: HBASE-15866
> URL: https://issues.apache.org/jira/browse/HBASE-15866
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.0
> Reporter: Andrew Purtell
> Assignee: Vivek Koppuru
> Labels: newbie, patch
> Fix For: 2.0.0
>
> Attachments: HBASE-15866.patch, HBASE-15866.patch,
> read-write-rpc-timeouts.patch, read-write-rpc.v1.patch
>
>
> We have a single tunable for the RPC timeout interval - hbase.rpc.timeout.
> This is fine for the general case but there are use cases where it would be
> advantageous to set two separate timeouts for reads (gets, scans, perhaps
> with significant server side filtering - although the new scanner heartbeat
> feature mitigates where available) and mutations (fail fast under tight SLA,
> resubmit or take mitigating action).
> I propose we refer to a configuration setting "hbase.rpc.read.timeout" when
> handling read operations and "hbase.rpc.write.timeout" when handling write
> operations. If those values are not set in the configuration, fall back to
> the value of "hbase.rpc.timeout" or its default.
> So for example in HTable instead of one global timeout for each RPC
> (rpcTimeout), there would be a readRpcTimeout and writeRpcTimeout also set up
> in HTable#finishSetup. Then wherever we set up RPC with
> RpcRetryingCallerFactory#newCaller(int rpcTimeout) we pass in the read or
> write timeout depending on what the op is.
> In general I don't like the idea of adding configuration parameters to our
> already heavyweight set, but I think the inability to control timeouts
> separately for reads and writes is an operational deficit.
> See also PHOENIX-2916.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)