You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2019/04/18 03:49:32 UTC
[kylin] branch master updated: KYLIN-3959 shutdown query cache for
realtime olap
This is an automated email from the ASF dual-hosted git repository.
magang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push:
new f0cfdf5 KYLIN-3959 shutdown query cache for realtime olap
f0cfdf5 is described below
commit f0cfdf537e1b5a57cf15fc1204e9294367fb7e5f
Author: hit-lacus <hi...@126.com>
AuthorDate: Tue Apr 16 17:44:48 2019 +0800
KYLIN-3959 shutdown query cache for realtime olap
---
.../apache/kylin/rest/service/QueryService.java | 23 +++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index da4fcb6..59b2b61 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -117,6 +117,7 @@ import org.apache.kylin.rest.util.SQLResponseSignatureUtil;
import org.apache.kylin.rest.util.TableauInterceptor;
import org.apache.kylin.storage.hybrid.HybridInstance;
import org.apache.kylin.storage.hybrid.HybridManager;
+import org.apache.kylin.storage.stream.StreamStorageQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -480,6 +481,23 @@ public class QueryService extends BasicService {
logger.info("Stats of SQL response: isException: {}, duration: {}, total scan count {}", //
String.valueOf(sqlResponse.getIsException()), String.valueOf(sqlResponse.getDuration()),
String.valueOf(sqlResponse.getTotalScanCount()));
+
+ boolean realtimeQuery = false;
+ Collection<OLAPContext> olapContexts = OLAPContext.getThreadLocalContexts();
+ if (olapContexts != null) {
+ for (OLAPContext ctx : olapContexts) {
+ try {
+ if (ctx.storageContext.getStorageQuery() instanceof StreamStorageQuery) {
+ realtimeQuery = true;
+ logger.debug("Shutdown query cache for realtime.");
+ }
+ } catch (Exception e) {
+ logger.error("Error", e);
+ }
+
+ }
+ }
+
if (checkCondition(queryCacheEnabled, "query cache is disabled") //
&& checkCondition(!Strings.isNullOrEmpty(sqlResponse.getCube()),
"query does not hit cube nor hybrid") //
@@ -499,7 +517,10 @@ public class QueryService extends BasicService {
&& checkCondition(sqlResponse.getResults().size() < kylinConfig.getLargeQueryThreshold(),
"query response is too large: {} ({})", sqlResponse.getResults().size(),
kylinConfig.getLargeQueryThreshold())) {
- cacheManager.getCache(QUERY_CACHE).put(sqlRequest.getCacheKey(), sqlResponse);
+
+ if (!realtimeQuery) {
+ cacheManager.getCache(QUERY_CACHE).put(sqlRequest.getCacheKey(), sqlResponse);
+ }
} else if (isDummpyResponseEnabled) {
cacheManager.getCache(QUERY_CACHE).evict(sqlRequest.getCacheKey());
}