hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Yates (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14703) not collect stats when call HTable.mutateRow
Date Mon, 23 Nov 2015 18:28:11 GMT

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

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

{quote}
optional bool enabled = 4 [default = false];
Excuse me, what's the purpose for this option.
{quote}

Its just come cruft left in my example addendum from when I was trying to figure out how to
better implement stats. Unless you use it anywhere - I didn't see it - lets pull it out.

bq. But not remove RegionLoadStats in ResultOrException for PB parser not crashed when user
upgrade cluster.

What do you mean? Its an optional field, so if its not there on the wire, PB will just ignore
it (which is why PB generates #hasLoadStats() method).

bq. Maybe we should add process flag back into MultiResponse. wdyt?

ClientProtos.MultiResponse (the PB) or MultiResponse (o.a.h.hbase.client class)? I think by
marking it as an EMPTY_RESULT we are implicitly saying 'processed'. The only other option
for that value is as an exception, right?

> 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
>             Fix For: 2.0.0
>
>         Attachments: HBASE-14702_v5.2_addendum-addendum.patch, 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, HBASE-14703_v6.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)

Mime
View raw message