You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2020/02/07 14:26:09 UTC

[kylin] 14/44: KYLIN-3609 KYLIN-3409 KYLIN-4161 CubeSegmentStatisticsMap exist only on OLAPQuery.EnumeratorTypeEnum.OLAP query type. (#942)

This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch 3.0.x
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 8e2bc1f7ec0e85bad0f62e07c1320ad3b536e06d
Author: Alexander Sidorchuk <39...@users.noreply.github.com>
AuthorDate: Mon Dec 23 16:17:06 2019 +0300

    KYLIN-3609 KYLIN-3409 KYLIN-4161 CubeSegmentStatisticsMap exist only on OLAPQuery.EnumeratorTypeEnum.OLAP query type. (#942)
---
 .../kylin/rest/metrics/QueryMetricsFacade.java     | 47 +++++++++++++---------
 1 file changed, 27 insertions(+), 20 deletions(-)

diff --git a/server-base/src/main/java/org/apache/kylin/rest/metrics/QueryMetricsFacade.java b/server-base/src/main/java/org/apache/kylin/rest/metrics/QueryMetricsFacade.java
index 497f477..226166d 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/metrics/QueryMetricsFacade.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/metrics/QueryMetricsFacade.java
@@ -36,6 +36,7 @@ import org.apache.kylin.metrics.lib.impl.TimedRecordEvent;
 import org.apache.kylin.metrics.property.QueryCubePropertyEnum;
 import org.apache.kylin.metrics.property.QueryPropertyEnum;
 import org.apache.kylin.metrics.property.QueryRPCPropertyEnum;
+import org.apache.kylin.query.enumerator.OLAPQuery;
 import org.apache.kylin.rest.request.SQLRequest;
 import org.apache.kylin.rest.response.SQLResponse;
 import org.slf4j.Logger;
@@ -121,26 +122,32 @@ public class QueryMetricsFacade {
                     sqlResponse.getThrowable());
 
             long totalStorageReturnCount = 0L;
-            for (Map<String, QueryContext.CubeSegmentStatistics> cubeEntry : contextEntry.getCubeSegmentStatisticsMap()
-                    .values()) {
-                for (QueryContext.CubeSegmentStatistics segmentEntry : cubeEntry.values()) {
-                    RecordEvent cubeSegmentMetricsEvent = new TimedRecordEvent(
-                            KylinConfig.getInstanceFromEnv().getKylinMetricsSubjectQueryCube());
-
-                    setCubeWrapper(cubeSegmentMetricsEvent, //
-                            norm(sqlRequest.getProject()), segmentEntry.getCubeName(), segmentEntry.getSegmentName(),
-                            segmentEntry.getSourceCuboidId(), segmentEntry.getTargetCuboidId(),
-                            segmentEntry.getFilterMask());
-
-                    setCubeStats(cubeSegmentMetricsEvent, //
-                            segmentEntry.getCallCount(), segmentEntry.getCallTimeSum(), segmentEntry.getCallTimeMax(),
-                            segmentEntry.getStorageSkippedRows(), segmentEntry.getStorageScannedRows(),
-                            segmentEntry.getStorageReturnedRows(), segmentEntry.getStorageAggregatedRows(),
-                            segmentEntry.isIfSuccess(), 1.0 / cubeEntry.size());
-
-                    totalStorageReturnCount += segmentEntry.getStorageReturnedRows();
-                    //For update cube segment level related query metrics
-                    MetricsManager.getInstance().update(cubeSegmentMetricsEvent);
+            if (contextEntry.getQueryType().equalsIgnoreCase(OLAPQuery.EnumeratorTypeEnum.OLAP.name())) {
+                for (Map<String, QueryContext.CubeSegmentStatistics> cubeEntry : contextEntry.getCubeSegmentStatisticsMap()
+                        .values()) {
+                    for (QueryContext.CubeSegmentStatistics segmentEntry : cubeEntry.values()) {
+                        RecordEvent cubeSegmentMetricsEvent = new TimedRecordEvent(
+                                KylinConfig.getInstanceFromEnv().getKylinMetricsSubjectQueryCube());
+
+                        setCubeWrapper(cubeSegmentMetricsEvent, //
+                                norm(sqlRequest.getProject()), segmentEntry.getCubeName(), segmentEntry.getSegmentName(),
+                                segmentEntry.getSourceCuboidId(), segmentEntry.getTargetCuboidId(),
+                                segmentEntry.getFilterMask());
+
+                        setCubeStats(cubeSegmentMetricsEvent, //
+                                segmentEntry.getCallCount(), segmentEntry.getCallTimeSum(), segmentEntry.getCallTimeMax(),
+                                segmentEntry.getStorageSkippedRows(), segmentEntry.getStorageScannedRows(),
+                                segmentEntry.getStorageReturnedRows(), segmentEntry.getStorageAggregatedRows(),
+                                segmentEntry.isIfSuccess(), 1.0 / cubeEntry.size());
+
+                        totalStorageReturnCount += segmentEntry.getStorageReturnedRows();
+                        //For update cube segment level related query metrics
+                        MetricsManager.getInstance().update(cubeSegmentMetricsEvent);
+                    }
+                }
+            } else {
+                if (!sqlResponse.getIsException()) {
+                    totalStorageReturnCount = sqlResponse.getResults().size();
                 }
             }
             setQueryStats(queryMetricsEvent, //