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 <nju_y...@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; }