This is an automated email from the ASF dual-hosted git repository. xxyu 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 ca08012 KYLIN-4933 Support set cache strength for dict cache ca08012 is described below commit ca0801201a4a5b3a78dd6fac788cbc5bde7e2bbd Author: zhengshengjun <shengjun_zh...@sina.com> AuthorDate: Fri Mar 12 16:48:26 2021 +0800 KYLIN-4933 Support set cache strength for dict cache --- .../java/org/apache/kylin/common/KylinConfigBase.java | 3 +++ .../java/org/apache/kylin/dict/DictionaryManager.java | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 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 cd251ee..8d22fa3 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 @@ -2709,4 +2709,7 @@ public abstract class KylinConfigBase implements Serializable { return Integer.valueOf(getOptional("kylin.storage.distcp-max-map-num", "50")); } + public String getKylinDictCacheStrength(){ + return getOptional("kylin.dict.cache.strength", "soft"); + }; } diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java index 6b23a9e..e16efb1 100755 --- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java +++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java @@ -67,8 +67,20 @@ public class DictionaryManager { private DictionaryManager(KylinConfig config) { this.config = config; - this.dictCache = CacheBuilder.newBuilder()// - .softValues()// + CacheStrength strength = CacheStrength.valueOf(config.getKylinDictCacheStrength()); + CacheBuilder cacheBuilder = CacheBuilder.newBuilder(); + switch (strength) { + case soft: + cacheBuilder.softValues(); + break; + case week: + cacheBuilder.weakValues(); + break; + case strong: + default: + break; + } + this.dictCache = cacheBuilder// .removalListener(new RemovalListener<String, DictionaryInfo>() { @Override public void onRemoval(RemovalNotification<String, DictionaryInfo> notification) { @@ -450,4 +462,7 @@ public class DictionaryManager { return ResourceStore.getStore(config); } + private enum CacheStrength{ + week, soft, strong + } }