Heng Chen created HBASE-14703:
---------------------------------
Summary: update the per-region stats twice for the call on return
Key: HBASE-14703
URL: https://issues.apache.org/jira/browse/HBASE-14703
Project: HBase
Issue Type: Bug
Reporter: Heng Chen
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)