[
https://issues.apache.org/jira/browse/HBASE-17174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15721124#comment-15721124
]
Ted Yu commented on HBASE-17174:
--------------------------------
Consider renaming the variable below (e.g. naming it future or reqFuture):
{code}
+ AsyncRequestFuture empty = checkTask(task);
{code}
{code}
+ task.getCallback(), task.getResults(), task.getCallable(),
task.getRpcTimeout(), task.getOperationTimeout());
...
+ tableName, retainedActions, nonceGroup, pool, callback, results,
needResults, null, rpcTimeout, operationTimeout);
{code}
Wrap long line.
{code}
+ * @param rpcTimeout use the default value if the pssed timeout is smaller
than zero
...
+ private <CResult> AsyncRequestFuture submit(ExecutorService pool, TableName
tableName,
...
+ boolean needResults, int rpcTimeout, int operationTimeout) throws
InterruptedIOException {
{code}
Please add @param for operationTimeout.
For AsyncProcessTask, please add class javadoc.
{code}
+ public enum SubmittedSize {
+ ALL, AT_LEAST_ONE, NORMAL
{code}
Add javadoc for each of the enum.
What's the unit for AT_LEAST_ONE (since the enum talks about size) ?
{code}
+ private AsyncProcess createAsyncProcess(boolean useGlobalErrors) {
{code}
Can the above method be folded into createAsyncProcess() ?
{code}
+ //TODO: Any better timeout value?
+ batch(actions, results, Math.max(readRpcTimeout, writeRpcTimeout));
{code}
Probably iterate through the actions and set to writeRpcTimeout if there are
both read and write actions.
Otherwise use the corresponding timeout.
> Use shared threadpool and AsyncProcess in BufferedMutatorImpl
> -------------------------------------------------------------
>
> Key: HBASE-17174
> URL: https://issues.apache.org/jira/browse/HBASE-17174
> Project: HBase
> Issue Type: New Feature
> Affects Versions: 2.0.0
> Reporter: ChiaPing Tsai
> Assignee: ChiaPing Tsai
> Priority: Minor
> Fix For: 2.0.0
>
> Attachments: HBASE-17174.v0.patch, HBASE-17174.v1.patch,
> HBASE-17174.v2.patch, HBASE-17174.v3.patch, HBASE-17174.v4.patch,
> HBASE-17174.v5.patch, HBASE-17174.v6.patch, HBASE-17174.v7.patch
>
>
> The following are reasons of reusing the pool and AP.
> # A update-heavy application, for example, loader, creates many
> BufferedMutator for batch updates. But these BufferedMutators can’t share a
> large threadpool because the shutdown() method will be called when closing
> any BufferedMutator. This patch adds a flag into BufferedMutatorParams for
> preventing calling the shutdown() method in BufferedMutatorImpl#close
> # The AsyncProcess has the powerful traffic control, but the control is
> against the single table currently. Because the AP is constructed at
> BufferedMutatorImpl's construction. This patch change the
> BufferedMutatorImpl's construction for reuse the AP so that the updates for
> different tables can be restricted by the same AP.
> Additionally, there are two changes(aren't included in latest patch) for #2.
> 1) The AP will be exposed to user.
> 2) A new method will be added to Connection for instantiating a AP.
> All suggestions are welcome.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)