You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/01/04 06:00:15 UTC

kylin git commit: KYLIN-2322 disable subtree cache

Repository: kylin
Updated Branches:
  refs/heads/master e62d87826 -> 487f2d99d


KYLIN-2322 disable subtree cache

Signed-off-by: Li Yang <li...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/487f2d99
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/487f2d99
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/487f2d99

Branch: refs/heads/master
Commit: 487f2d99dfe76566c5ff366e316bc531a694050c
Parents: e62d878
Author: xiefan46 <95...@qq.com>
Authored: Tue Jan 3 16:13:29 2017 +0800
Committer: Li Yang <li...@apache.org>
Committed: Wed Jan 4 13:43:48 2017 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/dict/CacheDictionary.java  |  2 +-
 .../apache/kylin/dict/TrieDictionaryForest.java | 31 ++++++++++++--------
 2 files changed, 20 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/487f2d99/core-dictionary/src/main/java/org/apache/kylin/dict/CacheDictionary.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/CacheDictionary.java b/core-dictionary/src/main/java/org/apache/kylin/dict/CacheDictionary.java
index 575358e..1b3bfa1 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/CacheDictionary.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/CacheDictionary.java
@@ -30,7 +30,7 @@ import java.util.concurrent.ConcurrentHashMap;
 abstract public class CacheDictionary<T> extends Dictionary<T> {
     private static final long serialVersionUID = 1L;
 
-    transient protected boolean enableValueCache = true;
+    transient protected boolean enableValueCache = false;
 
     transient private SoftReference<Map> valueToIdCache;
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/487f2d99/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java b/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
index c655854..065c3df 100755
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForest.java
@@ -27,7 +27,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-
 import org.apache.kylin.common.util.ByteArray;
 import org.apache.kylin.common.util.Bytes;
 import org.apache.kylin.common.util.BytesUtil;
@@ -57,13 +56,17 @@ public class TrieDictionaryForest<T> extends CacheDictionary<T> {
 
     public TrieDictionaryForest(ArrayList<TrieDictionary<T>> trees, ArrayList<ByteArray> valueDivide, //
             ArrayList<Integer> accuOffset, BytesConverter<T> bytesConverter, int baseId) {
+        init(trees, valueDivide, accuOffset, bytesConverter, baseId);
+    }
+
+    private void init(ArrayList<TrieDictionary<T>> trees, ArrayList<ByteArray> valueDivide, ArrayList<Integer> accuOffset, BytesConverter<T> bytesConverter, int baseId) {
         this.trees = trees;
         this.valueDivide = valueDivide;
         this.accuOffset = accuOffset;
         this.bytesConvert = bytesConverter;
         this.baseId = baseId;
         initMaxValue();
-        enableCache();
+        initForestCache();
     }
 
     @Override
@@ -100,7 +103,6 @@ public class TrieDictionaryForest<T> extends CacheDictionary<T> {
         return maxValue;
     }
 
-
     @Override
     protected int getIdFromValueBytesImpl(byte[] value, int offset, int len, int roundingFlag) throws IllegalArgumentException {
 
@@ -140,8 +142,6 @@ public class TrieDictionaryForest<T> extends CacheDictionary<T> {
         return id;
     }
 
-
-
     @Override
     protected int getValueBytesFromIdImpl(int id, byte[] returnValue, int offset) throws IllegalArgumentException {
         int index = (trees.size() == 1) ? 0 : findIndexById(id);
@@ -228,19 +228,20 @@ public class TrieDictionaryForest<T> extends CacheDictionary<T> {
         try {
             @SuppressWarnings("unused")
             int headSize = in.readInt();
-            this.baseId = in.readInt();
+            int baseId = in.readInt();
             String converterName = in.readUTF();
+            BytesConverter<T> bytesConverter = null;
             if (converterName.isEmpty() == false)
-                this.bytesConvert = ClassUtil.forName(converterName, BytesConverter.class).newInstance();
+                bytesConverter = ClassUtil.forName(converterName, BytesConverter.class).newInstance();
             //init accuOffset
             int accuSize = in.readInt();
-            this.accuOffset = new ArrayList<>();
+            ArrayList<Integer> accuOffset = new ArrayList<>();
             for (int i = 0; i < accuSize; i++) {
                 accuOffset.add(in.readInt());
             }
             //init valueDivide
             int valueDivideSize = in.readInt();
-            this.valueDivide = new ArrayList<>();
+            ArrayList<ByteArray> valueDivide = new ArrayList<>();
             for (int i = 0; i < valueDivideSize; i++) {
                 int length = in.readInt();
                 byte[] buffer = new byte[length];
@@ -248,14 +249,13 @@ public class TrieDictionaryForest<T> extends CacheDictionary<T> {
                 valueDivide.add(new ByteArray(buffer, 0, buffer.length));
             }
             int treeSize = in.readInt();
-            this.trees = new ArrayList<>();
+            ArrayList<TrieDictionary<T>> trees = new ArrayList<>();
             for (int i = 0; i < treeSize; i++) {
                 TrieDictionary<T> dict = new TrieDictionary<>();
                 dict.readFields(in);
                 trees.add(dict);
             }
-            initMaxValue();
-            enableCache();
+            init(trees, valueDivide, accuOffset, bytesConverter, baseId);
         } catch (Exception e) {
             if (e instanceof RuntimeException)
                 throw (RuntimeException) e;
@@ -368,4 +368,11 @@ public class TrieDictionaryForest<T> extends CacheDictionary<T> {
         }
     }
 
+    private void initForestCache() {
+        enableCache();
+        for (TrieDictionary<T> tree : trees) { //disable duplicate cache
+            tree.disableCache();
+        }
+    }
+
 }