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 <100650...@qq.com> AuthorDate: Mon May 28 21:15:43 2018 +0800 KYLIN-3391 BadQueryDetector only detect first query Signed-off-by: shaofengshi <shaofeng...@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()); } }