Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5FF8B1811B for ; Wed, 25 Nov 2015 06:51:11 +0000 (UTC) Received: (qmail 74315 invoked by uid 500); 25 Nov 2015 06:51:11 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 74263 invoked by uid 500); 25 Nov 2015 06:51:11 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 74250 invoked by uid 99); 25 Nov 2015 06:51:11 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Nov 2015 06:51:11 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id F03F62C1F5A for ; Wed, 25 Nov 2015 06:51:10 +0000 (UTC) Date: Wed, 25 Nov 2015 06:51:10 +0000 (UTC) From: "Heng Chen (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Comment Edited] (HBASE-14703) not collect stats when call HTable.mutateRow MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15026271#comment-15026271 ] Heng Chen edited comment on HBASE-14703 at 11/25/15 6:50 AM: ------------------------------------------------------------- {quote} It makes the code change we are putting in bigger, but doesn't really add any more clarity {quote} As for AbstractMultiCallable, if you think it has too much levels. Maybe we can unify it with PayloadCarryingServerCallable was (Author: chenheng): {quote} It makes the code change we are putting in bigger, but doesn't really add any more clarity {quote} I don't think so. Indeed, if we just want to fix this issue as title, it is easy and no need for this big change. But as you said, we should do it in right way. Currently logic is confused, there are two path to communicate with server and statistics information store in PB result, it is not reasonable. I think we should make it clear. After HBASE-14693, there are more statistics we need to collect, i think we should support an unify way to do it. wdyt? As for AbstractMultiCallable, if you think it has too much levels. Maybe we can unify it with PayloadCarryingServerCallable > 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-v6_with-check-and-mutate.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-addendum.patch, HBASE-14703_v6.patch, HBASE-14703_v7.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 callable, int callTimeout) > throws IOException, RuntimeException { > T result = delegate.callWithRetries(callable, callTimeout); > return updateStatsAndUnwrap(result, callable); > } > @Override > public T callWithoutRetries(RetryingCallable 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)