minor, close readers in SnapshotTable.takeSnapshot()

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

Branch: refs/heads/master
Commit: 60a254fa10ad16570eb19c7297a0bb713a70a86d
Parents: b6499b5
Author: Yang Li <liy...@apache.org>
Authored: Sun May 22 12:45:15 2016 +0800
Committer: Yang Li <liy...@apache.org>
Committed: Sun May 22 12:45:15 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/dict/lookup/SnapshotTable.java | 42 ++++++++++++--------
 1 file changed, 26 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/60a254fa/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
----------------------------------------------------------------------
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
index fdc0c44..7e49125 100644
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.kylin.common.persistence.ResourceStore;
 import org.apache.kylin.common.persistence.RootPersistentEntity;
@@ -73,30 +74,39 @@ public class SnapshotTable extends RootPersistentEntity 
implements ReadableTable
         TrieDictionaryBuilder<String> b = new 
TrieDictionaryBuilder<String>(new StringBytesConverter());
 
         TableReader reader = table.getReader();
-        while (reader.next()) {
-            String[] row = reader.getRow();
-            if (row.length <= maxIndex) {
-                throw new IllegalStateException("Bad hive table row, " + 
tableDesc + " expect " + (maxIndex + 1) + " columns, but got " + 
Arrays.toString(row));
-            }
+        try {
+            while (reader.next()) {
+                String[] row = reader.getRow();
+                if (row.length <= maxIndex) {
+                    throw new IllegalStateException("Bad hive table row, " + 
tableDesc + " expect " + (maxIndex + 1) + " columns, but got " + 
Arrays.toString(row));
+                }
 
-            for (String cell : row) {
-                if (cell != null)
-                    b.addValue(cell);
+                for (String cell : row) {
+                    if (cell != null)
+                        b.addValue(cell);
+                }
             }
+        } finally {
+            IOUtils.closeQuietly(reader);
         }
 
         this.dict = b.build(0);
 
-        reader = table.getReader();
         ArrayList<int[]> allRowIndices = new ArrayList<int[]>();
-        while (reader.next()) {
-            String[] row = reader.getRow();
-            int[] rowIndex = new int[row.length];
-            for (int i = 0; i < row.length; i++) {
-                rowIndex[i] = dict.getIdFromValue(row[i]);
+        reader = table.getReader();
+        try {
+            while (reader.next()) {
+                String[] row = reader.getRow();
+                int[] rowIndex = new int[row.length];
+                for (int i = 0; i < row.length; i++) {
+                    rowIndex[i] = dict.getIdFromValue(row[i]);
+                }
+                allRowIndices.add(rowIndex);
             }
-            allRowIndices.add(rowIndex);
+        } finally {
+            IOUtils.closeQuietly(reader);
         }
+
         this.rowIndices = allRowIndices;
     }
 
@@ -249,7 +259,7 @@ public class SnapshotTable extends RootPersistentEntity 
implements ReadableTable
                     this.rowIndices.add(rowIndex);
                 }
             }
-        }else{
+        } else {
             rowIndices = new ArrayList<int[]>();
             dict = new TrieDictionary<String>();
         }

Reply via email to