[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Fix Version/s: 1.4.0 0.98.18 1.1.4 1.2.1 1.3.0 3.0.0 > 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, 3.0.0, 1.3.0, 1.2.1, 1.1.4, 0.98.18, 1.4.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_v10.patch, HBASE-14703_v10.patch, > HBASE-14703_v11.patch, HBASE-14703_v12.patch, HBASE-14703_v13.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, HBASE-14703_v8.patch, > HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Status: Open (was: Patch Available) > 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_v10.patch, HBASE-14703_v10.patch, > HBASE-14703_v11.patch, HBASE-14703_v12.patch, HBASE-14703_v13.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, HBASE-14703_v8.patch, > HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Status: Patch Available (was: Open) > 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_v10.patch, HBASE-14703_v10.patch, > HBASE-14703_v11.patch, HBASE-14703_v12.patch, HBASE-14703_v13.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, HBASE-14703_v8.patch, > HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v13.patch v13 fix checkstyle errors and findbugs. > 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_v10.patch, HBASE-14703_v10.patch, > HBASE-14703_v11.patch, HBASE-14703_v12.patch, HBASE-14703_v13.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, HBASE-14703_v8.patch, > HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v12.patch v12 address all [~jesse_yates] comments on review board. > 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_v10.patch, HBASE-14703_v10.patch, > HBASE-14703_v11.patch, HBASE-14703_v12.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, HBASE-14703_v8.patch, HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v11.patch rebase on master > 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_v10.patch, HBASE-14703_v10.patch, > HBASE-14703_v11.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, > HBASE-14703_v8.patch, HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Description: We are trying to fix the stats implementation, by moving it out of the Result object and into an Rpc payload (but not the 'cell payload', just as part of the values returned from the request). This change will also us use easily switch to AsyncProcess as the executor, and support stats, for nearly all the rpc calls. However, that means when you upgrade the client or server, you will lose stats visibility until the other side is upgraded. We could keep around the Result based stats storage to accommodate the old api and send both stats back from the server (in each result and in the rpc payload). Note that we will still be wire compatible - protobufs mean we can just ride over the lack of information. The other tricky part of this is that Result has a non-InterfaceAudience.Private getStatistics() method (along with two InterfaceAudience.Private addResults and setStatistics methods), so we might need a release to deprecate the getStats() method before throwing it out? was: 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? > 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_v10.patch, HBASE-14703_v10.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, HBASE-14703_v8.patch, > HBASE-14703_v9.patch > > > We are trying to fix the stats implementation, by moving it out of the Result > object and into an Rpc payload (but not the 'cell payload', just as part of > the values returned from the request). This change will also us use easily > switch to AsyncProcess as the executor, and support stats, for nearly all the > rpc calls. However, that means when you upgrade the client or server, you > will lose stats visibility until the other side is upgraded. We could keep > around the Result based stats storage to accommodate the old api and send > both stats back from the server (in each result and in the rpc payload). > Note that we will still be wire compatible - protobufs mean we can just ride > over the lack of information. > The other tricky part of this is that Result has a > non-InterfaceAudience.Private getStatistics() method (along with two > InterfaceAudience.Private addResults and setStatistics methods), so we might > need a release to deprecate the getStats() method before throwing it out? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v10.patch resubmit to trigger QA > 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_v10.patch, HBASE-14703_v10.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, HBASE-14703_v8.patch, > HBASE-14703_v9.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v10.patch Update patch as [~jesse_yates] suggestions in RB. I also update RB. Thanks for your review. > 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_v10.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, HBASE-14703_v8.patch, HBASE-14703_v9.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v9.patch changes: * remove Enable option in Client.proto * fix some checkstyle errors. > 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, > HBASE-14703_v8.patch, HBASE-14703_v9.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v8.patch changes: * remove AbstractMultiCallable, just left repeated code in HTable, we will fix it in future. * fix some checkstyle errors. Thanks [~jesse_yates] for your nice review. > 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, > HBASE-14703_v8.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Status: Patch Available (was: Open) > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v7.patch > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v6-addendum.patch > 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 > > > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: (was: HBASE-14703_v6-addendum.patch) > 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 > > > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v6-addendum.patch > 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 > > > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Status: Open (was: Patch Available) > 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.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Attachment: HBASE-14703-v6_with-check-and-mutate.patch Attaching a patch on top of v6 to support checkAndMutate with the new style. Takes advantage of the 'exists' flag in Result to track processed state. Haven't tested against the whole test suite, but TestCheckAndMutate passes for me locally. WDYT [~chenheng]? > 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.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Fix Version/s: 2.0.0 Status: Patch Available (was: Open) > 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 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v6.patch > 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-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 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14702_v5.2_addendum-addendum.patch > 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-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 > > > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Attachment: HBASE-14703-5.2-addendum.patch I'm starting to think that to support stats across all the mutation based calls needs to be reimplememented to support other calls. I'm attaching an addendum to 5.2 (so apply 5.2 and then this patch; makes it easier to see where I'm going with the bigger change). Here's what I'm thinking instead. Results should not have a regionStatistic as there are potentially multiple results for a single region. Instead, MultiResponse should carry the statistics. In the RsRpcServices, we can collect statistics about all the regions affected by the call and then return them once per region Then in asyncProcess we just update all the region stats at once when we receive the MultiResponse. Note this is also cleaner in cases where we return multiple results for the same region; where previously we would return multiple region load stats, now we can return just the most recent. Also, did a little of cleanup to support using this is in the mutateRows by adding an empty result for each mutateRow action that was successfully processed. My only concern is about the viablilty of implementing this w/o breaking wire compatibility. Since this is just adding protobuf fields it will still make the puts correctly, but in the case of upgrading, the statistics will not be correct (actually, missing) from until both sides are upgraded. I don't think this is a widely used feature yet, so I'm not too worried, but thought I should mention it. > 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 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Status: Open (was: Patch Available) > 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-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 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v5.2.patch > 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-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 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v5.1.patch Fix bug about failed test case. It is here {code: title=RpcRetryingCallerImpl.java} private long singleCallDuration(final long expectedSleep) { -return (EnvironmentEdgeManager.currentTime() - this.globalStartTime) + expectedSleep; +return (EnvironmentEdgeManager.currentTime() - tracker.getStartTime()) + expectedSleep; } {code} > 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-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.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v5.patch > 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-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.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Attachment: HBASE-14703-v4.1.patch Looks like I was a little bit behind master. Lets try this version. > 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-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 > > > 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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jesse Yates updated HBASE-14703: Attachment: HBASE-14703-v4.patch I like this a lot more. Still wasn't a fan of the switching we had to do in the async process, the time calculation logic semi-copy from retryingcaller and the lack of tracking for the operation. So, I took a crack at it. Now, the timeout tracking is encapsulated and reused in the RetryingCaller and in the callable. I think its necessary in the callable, since that is the thing being reused across calls. Then I added a new callable class with the expectation of almost getting rid of RegionServerCallable everywhere (except for Coprocessor calls) in favor of a 'PayloadCarryingCallable'; the new callable sets the PayloadCarryingRpcController, allowing it to be canceled and saving the creation in _every single use_ of RegionServerCallable that we'd eventually replace. This lets us unify the interfaces in the progress tracking and cancel the mutateRows call as well. [~chenheng], your turn. What do you think? > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703-v4.patch, HBASE-14703.patch, HBASE-14703_v1.patch, > HBASE-14703_v2.patch, HBASE-14703_v3.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v3.patch > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.patch, HBASE-14703_v1.patch, HBASE-14703_v2.patch, > HBASE-14703_v3.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Status: Patch Available (was: Open) > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.patch, HBASE-14703_v1.patch, HBASE-14703_v2.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v2.patch > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.patch, HBASE-14703_v1.patch, HBASE-14703_v2.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Status: Open (was: Patch Available) > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.patch, HBASE-14703_v1.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Status: Patch Available (was: Open) > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.patch, HBASE-14703_v1.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Attachment: HBASE-14703_v1.patch I update the title of this issue Try this patch > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.patch, HBASE-14703_v1.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)
[jira] [Updated] (HBASE-14703) not collect stats when call HTable.mutateRow
[ https://issues.apache.org/jira/browse/HBASE-14703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Heng Chen updated HBASE-14703: -- Summary: not collect stats when call HTable.mutateRow (was: update the per-region stats twice for the call on return) > 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-async.patch, HBASE-14703-start.patch, > HBASE-14703.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)