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/10/29 11:27:54 UTC

[kylin] 02/12: KYLIN-2894 add trigger kylin.query.cache-signature-enabled for enabling query signature

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 1fcf9679e14978b9d0fa36a500797991be34e63e
Author: Zhong <nj...@apache.org>
AuthorDate: Thu Oct 18 17:04:25 2018 +0800

    KYLIN-2894 add trigger kylin.query.cache-signature-enabled for enabling query signature
---
 .../main/java/org/apache/kylin/common/KylinConfigBase.java  |  4 ++++
 .../java/org/apache/kylin/rest/service/CacheService.java    | 13 +++++++++----
 .../java/org/apache/kylin/rest/service/QueryService.java    |  7 +++++--
 3 files changed, 18 insertions(+), 6 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 135d6e6..43c0831 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
@@ -1558,6 +1558,10 @@ abstract public class KylinConfigBase implements Serializable {
                 "org.apache.kylin.rest.signature.RealizationSetCalculator");
     }
 
+    public boolean isQueryCacheSignatureEnabled() {
+        return Boolean.parseBoolean(this.getOptional("kylin.query.cache-signature-enabled", "false"));
+    }
+
     // ============================================================================
     // SERVER
     // ============================================================================
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/CacheService.java b/server-base/src/main/java/org/apache/kylin/rest/service/CacheService.java
index 67d49d9..930852b 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/CacheService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/CacheService.java
@@ -19,8 +19,8 @@
 package org.apache.kylin.rest.service;
 
 import java.io.IOException;
-
 import java.util.Map;
+
 import org.apache.kylin.metadata.cachesync.Broadcaster;
 import org.apache.kylin.metadata.cachesync.Broadcaster.Event;
 import org.apache.kylin.storage.hbase.HBaseConnection;
@@ -117,9 +117,14 @@ public class CacheService extends BasicService implements InitializingBean {
 
     public void cleanDataCache(String project) {
         if (cacheManager != null) {
-            logger.info("cleaning cache for project " + project + " (currently remove exception entries)");
-            //            cacheManager.getCache(QueryService.SUCCESS_QUERY_CACHE).removeAll();
-            cacheManager.getCache(QueryService.EXCEPTION_QUERY_CACHE).removeAll();
+            if (getConfig().isQueryCacheSignatureEnabled()) {
+                logger.info("cleaning cache for project " + project + " (currently remove exception entries)");
+                cacheManager.getCache(QueryService.EXCEPTION_QUERY_CACHE).removeAll();
+            } else {
+                logger.info("cleaning cache for project " + project + " (currently remove all entries)");
+                cacheManager.getCache(QueryService.SUCCESS_QUERY_CACHE).removeAll();
+                cacheManager.getCache(QueryService.EXCEPTION_QUERY_CACHE).removeAll();
+            }
         } else {
             logger.warn("skip cleaning cache for project " + project);
         }
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 fb13ff5..d0ba4da 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
@@ -533,7 +533,8 @@ public class QueryService extends BasicService {
                 return null;
             }
             logger.info("The sqlResponse is found in " + cacheType);
-            if (!SQLResponseSignatureUtil.checkSignature(getConfig(), response, sqlRequest.getProject())) {
+            if (getConfig().isQueryCacheSignatureEnabled()
+                    && !SQLResponseSignatureUtil.checkSignature(getConfig(), response, sqlRequest.getProject())) {
                 logger.info("The sql response signature is changed. Remove it from QUERY_CACHE.");
                 cache.evict(sqlRequest.getCacheKey());
                 return null;
@@ -1091,7 +1092,9 @@ public class QueryService extends BasicService {
         response.setTotalScanCount(queryContext.getScannedRows());
         response.setTotalScanBytes(queryContext.getScannedBytes());
         response.setCubeSegmentStatisticsList(queryContext.getCubeSegmentStatisticsResultList());
-        response.setSignature(SQLResponseSignatureUtil.createSignature(getConfig(), response, projectName));
+        if (getConfig().isQueryCacheSignatureEnabled()) {
+            response.setSignature(SQLResponseSignatureUtil.createSignature(getConfig(), response, projectName));
+        }
         return response;
     }