You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2021/04/06 07:39:02 UTC
[kylin] branch master updated: KYLIN-4933 Support set cache
strength for dict cache
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 <sh...@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
+ }
}