You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/07/08 09:03:07 UTC

[kylin] 01/06: KYLIN-3391 BadQueryDetector only detect first query

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

shaofengshi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 1845ee0ce3b8f775e05443fed1b4d3e860ae7503
Author: yiming.xu <10...@qq.com>
AuthorDate: Mon May 28 21:15:43 2018 +0800

    KYLIN-3391 BadQueryDetector only detect first query
    
    Signed-off-by: shaofengshi <sh...@apache.org>
---
 .../src/main/java/org/apache/kylin/common/KylinConfigBase.java       | 5 ++++-
 .../main/java/org/apache/kylin/rest/service/BadQueryDetector.java    | 5 ++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index 3ae6c2d..637502e 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -1328,9 +1328,12 @@ abstract public class KylinConfigBase implements Serializable {
     public int getBadQueryDefaultAlertingSeconds() {
         return Integer.parseInt(getOptional("kylin.query.badquery-alerting-seconds", "90"));
     }
+    public double getBadQueryDefaultAlertingCoefficient() {
+        return Double.parseDouble(getOptional("kylin.query.timeout-seconds-coefficient", "0.5"));
+    }
 
     public int getBadQueryDefaultDetectIntervalSeconds() {
-        int time = getQueryTimeoutSeconds() / 2; // half of query timeout
+        int time =(int) (getQueryTimeoutSeconds() * getBadQueryDefaultAlertingCoefficient()); // half of query timeout
         if (time == 0) {
             time = 60; // 60 sec
         }
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java b/server-base/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java
index 51f49a7..3f3db45 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/BadQueryDetector.java
@@ -144,6 +144,7 @@ public class BadQueryDetector extends Thread {
     }
 
     private void detectBadQuery() {
+        logger.info("Detect bad query.");
         long now = System.currentTimeMillis();
         ArrayList<Entry> entries = new ArrayList<Entry>(runningQueries.values());
         Collections.sort(entries);
@@ -156,8 +157,6 @@ public class BadQueryDetector extends Thread {
             if (runningSec >= alertRunningSec) {
                 notify(BadQueryEntry.ADJ_SLOW, e);
                 dumpStackTrace(e.thread, e.queryId);
-            } else {
-                break; // entries are sorted by startTime
             }
         }
 
@@ -170,7 +169,7 @@ public class BadQueryDetector extends Thread {
     private void setQueryThreadInterrupted(Entry e, float runningSec) {
         if (queryTimeoutSeconds != 0 && runningSec >= queryTimeoutSeconds) {
             e.thread.interrupt();
-            logger.error("Trying to cancel query:" + e.thread.getName());
+            logger.error("Query running "+ runningSec + "s, Trying to cancel query:" + e.thread.getName());
         }
     }