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
+    }
 }