You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Jeffrey Zhong (JIRA)" <ji...@apache.org> on 2014/08/16 07:28:18 UTC
[jira] [Commented] (HBASE-11766) Backdoor CoprocessorHConnection is
no longer being used for local writes
[ https://issues.apache.org/jira/browse/HBASE-11766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14099511#comment-14099511 ]
Jeffrey Zhong commented on HBASE-11766:
---------------------------------------
In class CoprocessorHConnection, we have following:
{quote}
public <R> void processBatchCallback(List<? extends Row> list, TableName tableName,
ExecutorService pool, Object[] results, Callback<R> callback) throws IOException,
InterruptedException {
delegate.processBatchCallback(list, tableName, pool, results, callback);
}
{quote}
The delegate is HConnectionImplementation object. Inside processBatchCallback shown below, we call createAsyncProcess using "this", which is a HConnectionImplementation instance, so the overridden getClient() behavior of CoprocessorHConnection is lost because the "this" is the delegate instance in type of HConnectionImplementation.
{code}
protected <R> AsyncProcess createAsyncProcess(TableName tableName, ExecutorService pool,
AsyncProcess.AsyncProcessCallback<R> callback, Configuration conf) {
return new AsyncProcess<R>(this, tableName, pool, callback, conf,
RpcRetryingCallerFactory.instantiate(conf), RpcControllerFactory.instantiate(conf));
}
{code}
We should extend CoprocessorHConnection from class HConnectionImplementation.
> Backdoor CoprocessorHConnection is no longer being used for local writes
> ------------------------------------------------------------------------
>
> Key: HBASE-11766
> URL: https://issues.apache.org/jira/browse/HBASE-11766
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.98.4
> Reporter: James Taylor
> Labels: Phoenix
>
> There's a backdoor CoprocessorHConnection used to ensure that a batched mutation does not go over the wire and back, but executes immediately locally. This is leveraged by Phoenix during secondary index maintenance (for an ~20% perf improvement). It looks to me like it's no longer used, as the following function is never invoked:
> public org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ClientService.BlockingInterface
> getClient(ServerName serverName) throws IOException {
> It'd be good if feasible to add an HBase unit test to prevent further regressions. For more info, see PHOENIX-1166.
--
This message was sent by Atlassian JIRA
(v6.2#6252)