You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/06/30 12:22:47 UTC
[kylin] 01/12: KYLIN-3391 BadQueryDetector only detect first query
This is an automated email from the ASF dual-hosted git repository.
liyang pushed a commit to branch sync
in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 5429f3ffccf8bf13fe371365bc6ffe2d2b99a4e7
Author: yiming.xu <10...@qq.com>
AuthorDate: Mon May 28 21:15:43 2018 +0800
KYLIN-3391 BadQueryDetector only detect first query
---
.../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 da56f92..66be693 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
@@ -1324,9 +1324,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());
}
}