You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Heng Chen (JIRA)" <ji...@apache.org> on 2015/10/27 05:42:27 UTC
[jira] [Created] (HBASE-14703) update the per-region stats twice
for the call on return
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)