[ 
https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15014002#comment-15014002
 ] 

Jesse Yates commented on HBASE-14703:
-------------------------------------

Looking back to the original purpose, its actually about ripping out the 
StatsTrackingRpcRetryingCaller. With the new implementation envisioned, I don't 
think we will still need it.

Since we are working in 'master' there is no reason to put in a 'hack' fix and 
then go back and fix it properly right after - we should just do it "right" the 
first time. Right just means a bigger change, which takes a bit longer

How about we make this patch the cleanup of "stuff that doesn't work". That 
would be the statsTrackingRpcRetryingCaller and all the stats work in 
RsRpcServices where we attempt to attach the statistics to the result from the 
mutateRows computation.

Then follow up JIRAs look like:
 - Support stats tracking for all calls (Umbrella)
 -- Use async everywhere in HTable calls
 -- Move statistics to per-call
 -- unify statistic collection to an interface

wdyt?

Thanks for being patient through all this - sometimes it takes some exploration 
and trial/error to figure out what works.

> not collect stats when call HTable.mutateRow 
> ---------------------------------------------
>
>                 Key: HBASE-14703
>                 URL: https://issues.apache.org/jira/browse/HBASE-14703
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Heng Chen
>            Assignee: Heng Chen
>         Attachments: HBASE-14703-5.2-addendum.patch, HBASE-14703-async.patch, 
> HBASE-14703-start.patch, HBASE-14703-v4.1.patch, HBASE-14703-v4.patch, 
> HBASE-14703.patch, HBASE-14703_v1.patch, HBASE-14703_v2.patch, 
> HBASE-14703_v3.patch, HBASE-14703_v5.1.patch, HBASE-14703_v5.2.patch, 
> HBASE-14703_v5.patch
>
>
> In {{AsyncProcess.SingleServerRequestRunnable}}, it seems we update 
> serverStatistics twice.
> The first one is that we wrapper {{RetryingCallable}}  by 
> {{StatsTrackingRpcRetryingCaller}}, and do serverStatistics update when we 
> call {{callWithRetries}} and {{callWithoutRetries}}. Relates code like below:
> {code}
>   @Override
>   public T callWithRetries(RetryingCallable<T> callable, int callTimeout)
>       throws IOException, RuntimeException {
>     T result = delegate.callWithRetries(callable, callTimeout);
>     return updateStatsAndUnwrap(result, callable);
>   }
>   @Override
>   public T callWithoutRetries(RetryingCallable<T> callable, int callTimeout)
>       throws IOException, RuntimeException {
>     T result = delegate.callWithRetries(callable, callTimeout);
>     return updateStatsAndUnwrap(result, callable);
>   }
> {code}
> The secondary one is after we get response, in {{receiveMultiAction}}, we do 
> update again. 
> {code}
> // update the stats about the region, if its a user table. We don't want to 
> slow down
> // updates to meta tables, especially from internal updates (master, etc).
> if (AsyncProcess.this.connection.getStatisticsTracker() != null) {
>   result = ResultStatsUtil.updateStats(result,
>   AsyncProcess.this.connection.getStatisticsTracker(), server, regionName);
> }
> {code}
> It seems that {{StatsTrackingRpcRetryingCaller}} is NOT necessary,  remove it?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to