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)