[
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)