You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by bi...@apache.org on 2017/03/09 06:10:56 UTC

kylin git commit: KYLIN-2360 fix bugs reported by Sonar

Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2360 [created] 7c16323bd


KYLIN-2360 fix bugs reported by Sonar


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

Branch: refs/heads/KYLIN-2360
Commit: 7c16323bd52d97cb6644b78f2fb48a7032c775f7
Parents: 2dfffde
Author: Billy Liu <bi...@apache.org>
Authored: Wed Mar 8 22:10:46 2017 -0800
Committer: Billy Liu <bi...@apache.org>
Committed: Wed Mar 8 22:10:46 2017 -0800

----------------------------------------------------------------------
 .../org/apache/kylin/common/KylinConfig.java    | 35 --------------------
 .../kylin/common/util/HiveCmdBuilder.java       |  5 ++-
 .../apache/kylin/common/util/SparkEntry.java    |  2 +-
 .../apache/kylin/common/util/ZipFileUtils.java  | 10 ++++--
 .../java/org/apache/kylin/cube/CubeSegment.java |  3 +-
 .../org/apache/kylin/cube/CubeValidator.java    |  4 +++
 .../org/apache/kylin/cube/kv/CubeDimEncMap.java |  2 +-
 .../org/apache/kylin/cube/model/CubeDesc.java   |  2 +-
 .../validation/rule/AggregationGroupRule.java   |  2 +-
 .../kylin/dimension/IDimensionEncodingMap.java  |  2 +-
 .../apache/kylin/metadata/MetadataManager.java  |  5 ++-
 .../metadata/model/IJoinedFlatTableDesc.java    |  2 +-
 .../apache/kylin/metadata/model/JoinsTree.java  |  2 +-
 .../kylin/metadata/model/PartitionDesc.java     |  2 +-
 .../spark/SparkBatchCubingJobBuilder2.java      |  6 ++--
 .../kylin/engine/spark/SparkExecutable.java     |  3 +-
 .../kylin/query/schema/OLAPSchemaFactory.java   |  6 +++-
 .../rest/controller/StreamingController.java    |  3 ++
 .../kylin/storage/hbase/util/RowCounterCLI.java | 30 ++++++++++-------
 .../kylin/storage/hdfs/HDFSResourceStore.java   |  4 +--
 .../apache/kylin/tool/CubeMetaExtractor.java    |  2 +-
 21 files changed, 61 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
index 4fcc61f..c07862b 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -24,10 +24,8 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.PrintWriter;
 import java.io.StringReader;
 import java.nio.charset.Charset;
-import java.util.Enumeration;
 import java.util.Map;
 import java.util.Properties;
 
@@ -349,39 +347,6 @@ public class KylinConfig extends KylinConfigBase {
             return this.base() == ((KylinConfig) another).base();
     }
 
-    public static void writeOverrideProperties(Properties properties) throws IOException {
-        File propFile = getKylinPropertiesFile();
-        File overrideFile = new File(propFile.getParentFile(), propFile.getName() + ".override");
-        overrideFile.createNewFile();
-        FileInputStream fis2 = null;
-        Properties override = new Properties();
-        try {
-            fis2 = new FileInputStream(overrideFile);
-            override.load(fis2);
-            for (Map.Entry<Object, Object> entries : properties.entrySet()) {
-                override.setProperty(entries.getKey().toString(), entries.getValue().toString());
-            }
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
-            IOUtils.closeQuietly(fis2);
-        }
-
-        PrintWriter pw = null;
-        try {
-            pw = new PrintWriter(overrideFile);
-            Enumeration<?> e = override.propertyNames();
-            while (e.hasMoreElements()) {
-                String key = (String) e.nextElement();
-                pw.println(key + "=" + override.getProperty(key));
-            }
-            pw.close();
-        } finally {
-            IOUtils.closeQuietly(pw);
-        }
-
-    }
-
     private static void dumpStackTrace() {
 
         //uncomment below to start debugging

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
index 5942ba9..0ec2d36 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
@@ -62,9 +62,11 @@ public class HiveCmdBuilder {
             break;
         case BEELINE:
             BufferedWriter bw = null;
+            FileWriter fw = null;
             try {
                 File tmpHql = File.createTempFile("beeline_", ".hql");
-                bw = new BufferedWriter(new FileWriter(tmpHql));
+                fw = new FileWriter(tmpHql);
+                bw = new BufferedWriter(fw);
                 for (String statement : statements) {
                     bw.write(statement);
                     bw.newLine();
@@ -84,6 +86,7 @@ public class HiveCmdBuilder {
                 throw new RuntimeException(e);
             } finally {
                 IOUtils.closeQuietly(bw);
+                IOUtils.closeQuietly(fw);
             }
             break;
         default:

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-common/src/main/java/org/apache/kylin/common/util/SparkEntry.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/SparkEntry.java b/core-common/src/main/java/org/apache/kylin/common/util/SparkEntry.java
index ce11b91..b26959f 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/SparkEntry.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/SparkEntry.java
@@ -28,7 +28,7 @@ public final class SparkEntry {
         if (!(args.length >= 2)) {
             throw new IllegalArgumentException(String.valueOf("-className is required"));
         }
-        if (!(args[0].equals("-className"))) {
+        if (!("-className".equals(args[0]))) {
             throw new IllegalArgumentException(String.valueOf("-className is required"));
         }
         final String className = args[1];

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java b/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
index a2326ee..6f6d13d 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/ZipFileUtils.java
@@ -40,18 +40,23 @@ public class ZipFileUtils {
             throw new RuntimeException("Zipfile must end with .zip");
         }
         ZipOutputStream zipFile = null;
+        FileOutputStream fos = null;
         try {
-            zipFile = new ZipOutputStream(new FileOutputStream(zipFilename));
+            fos = new FileOutputStream(zipFilename);
+            zipFile = new ZipOutputStream(fos);
             compressDirectoryToZipfile(normDir(new File(sourceDir).getParent()), normDir(sourceDir), zipFile);
         } finally {
             IOUtils.closeQuietly(zipFile);
+            IOUtils.closeQuietly(fos);
         }
     }
 
     public static void decompressZipfileToDirectory(String zipFileName, File outputFolder) throws IOException {
         ZipInputStream zipInputStream = null;
+        FileInputStream fis = null;
         try {
-            zipInputStream = new ZipInputStream(new FileInputStream(zipFileName));
+            fis = new FileInputStream(zipFileName);
+            zipInputStream = new ZipInputStream(fis);
             ZipEntry zipEntry = null;
             while ((zipEntry = zipInputStream.getNextEntry()) != null) {
                 logger.info("decompressing " + zipEntry.getName() + " is directory:" + zipEntry.isDirectory() + " available: " + zipInputStream.available());
@@ -73,6 +78,7 @@ public class ZipFileUtils {
             }
         } finally {
             IOUtils.closeQuietly(zipInputStream);
+            IOUtils.closeQuietly(fis);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
index 45310f0..835accc 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
@@ -19,6 +19,7 @@
 package org.apache.kylin.cube;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -99,7 +100,7 @@ public class CubeSegment implements Comparable<CubeSegment>, IBuildable, ISegmen
     private ConcurrentHashMap<String, String> snapshots; // table name ==> snapshot resource path
 
     @JsonProperty("rowkey_stats")
-    private List<Object[]> rowkeyStats = Lists.newArrayList();
+    private ArrayList<Object[]> rowkeyStats = Lists.newArrayList();
 
     @JsonProperty("source_partition_offset_start")
     @JsonInclude(JsonInclude.Include.NON_EMPTY)

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-cube/src/main/java/org/apache/kylin/cube/CubeValidator.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeValidator.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeValidator.java
index f94752f..7fbfca0 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeValidator.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeValidator.java
@@ -95,6 +95,10 @@ public class CubeValidator {
         // for all other segments, sourceOffset SHOULD fit/connect other segments
         for (CubeSegment seg : news) {
             Pair<Boolean, Boolean> pair = fitInSegments(all, seg);
+            if(pair == null) {
+                logger.warn("Empty segment found, ignore");
+                continue;
+            }
             boolean startFit = pair.getFirst();
             boolean endFit = pair.getSecond();
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-cube/src/main/java/org/apache/kylin/cube/kv/CubeDimEncMap.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/kv/CubeDimEncMap.java b/core-cube/src/main/java/org/apache/kylin/cube/kv/CubeDimEncMap.java
index bd9554a..84048ecb 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/kv/CubeDimEncMap.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/kv/CubeDimEncMap.java
@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
 
 import java.util.Map;
 
-public class CubeDimEncMap implements IDimensionEncodingMap, java.io.Serializable {
+public class CubeDimEncMap implements IDimensionEncodingMap {
 
     private static final Logger logger = LoggerFactory.getLogger(CubeDimEncMap.class);
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
index c1469fe..f0955b5 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
@@ -440,7 +440,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
     }
 
     public int getBuildLevel() {
-        if (aggregationGroups == null || aggregationGroups.size() == 0)
+        if (aggregationGroups == null || aggregationGroups.isEmpty())
             throw new IllegalStateException("Cube has no aggregation group.");
 
         return Collections.max(Collections2.transform(aggregationGroups, new Function<AggregationGroup, Integer>() {

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java
index c9e2d28..5d51bc7 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/AggregationGroupRule.java
@@ -50,7 +50,7 @@ public class AggregationGroupRule implements IValidatorRule<CubeDesc> {
 
     private void inner(CubeDesc cube, ValidateContext context) {
 
-        if (cube.getAggregationGroups() == null || cube.getAggregationGroups().size() == 0) {
+        if (cube.getAggregationGroups() == null || cube.getAggregationGroups().isEmpty()) {
             context.addResult(ResultLevel.ERROR, "Cube should have at least one Aggregation group.");
             return;
         }

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-metadata/src/main/java/org/apache/kylin/dimension/IDimensionEncodingMap.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/dimension/IDimensionEncodingMap.java b/core-metadata/src/main/java/org/apache/kylin/dimension/IDimensionEncodingMap.java
index 4df4701..fb25c1e 100644
--- a/core-metadata/src/main/java/org/apache/kylin/dimension/IDimensionEncodingMap.java
+++ b/core-metadata/src/main/java/org/apache/kylin/dimension/IDimensionEncodingMap.java
@@ -30,7 +30,7 @@ import org.apache.kylin.metadata.model.TblColRef;
  * hard to enumerate all values of a encoding, thus TupleFilterDictionaryTranslater 
  * cannot work on DimensionEncoding.
  */
-public interface IDimensionEncodingMap {
+public interface IDimensionEncodingMap extends java.io.Serializable {
 
     /** Get dimension encoding of a column */
     DimensionEncoding get(TblColRef col);

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
index 9427ace..8a02c59 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
@@ -261,15 +261,14 @@ public class MetadataManager {
         String path = desc.getResourcePath();
         getStore().putResource(path, desc, EXTERNAL_FILTER_DESC_SERIALIZER);
         desc = reloadExternalFilterAt(path);
-        extFilterMap.put(desc.getName(), desc);
-
+        if(desc != null)
+            extFilterMap.put(desc.getName(), desc);
     }
 
     public void removeExternalFilter(String name) throws IOException {
         String path = ExternalFilterDesc.concatResourcePath(name);
         getStore().deleteResource(path);
         extFilterMap.remove(name);
-
     }
 
     private void init(KylinConfig config) throws IOException {

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
index b545e50..509cd46 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 /**
  */
-public interface IJoinedFlatTableDesc {
+public interface IJoinedFlatTableDesc extends java.io.Serializable{
 
     String getTableName();
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
index c7666cb..3efca2a 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinsTree.java
@@ -30,7 +30,7 @@ import com.google.common.base.Preconditions;
 public class JoinsTree  implements Serializable {
     private static final long serialVersionUID = 1L;
     
-    final Map<String, Chain> tableChains = new LinkedHashMap<>();
+    final HashMap<String, Chain> tableChains = new LinkedHashMap<>();
 
     public JoinsTree(TableRef rootTable, List<JoinDesc> joins) {
         for (JoinDesc join : joins) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
index 38c2de5..19c58fd 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
@@ -173,7 +173,7 @@ public class PartitionDesc implements Serializable {
     
     // ============================================================================
 
-    public static interface IPartitionConditionBuilder {
+    public static interface IPartitionConditionBuilder extends java.io.Serializable{
         String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive);
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkBatchCubingJobBuilder2.java
----------------------------------------------------------------------
diff --git a/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkBatchCubingJobBuilder2.java b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkBatchCubingJobBuilder2.java
index e0b3e6c..a72999e 100644
--- a/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkBatchCubingJobBuilder2.java
+++ b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkBatchCubingJobBuilder2.java
@@ -74,11 +74,11 @@ public class SparkBatchCubingJobBuilder2 extends BatchCubingJobBuilder2 {
 
     }
 
-    private String findJar(String className, String perferLibraryName) {
+    private String findJar(String className, String preferLibraryName) {
         try {
-            return ClassUtil.findContainingJar(Class.forName(className), perferLibraryName);
+            return ClassUtil.findContainingJar(Class.forName(className), preferLibraryName);
         } catch (ClassNotFoundException e) {
-            logger.warn("failed to locate jar for class " + className + ", ignore it");
+            logger.warn("failed to locate jar for class " + className + ", ignore it", e);
         }
 
         return "";

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
----------------------------------------------------------------------
diff --git a/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
index 5ad21cf..145e3ff 100644
--- a/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
+++ b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
@@ -80,8 +80,7 @@ public class SparkExecutable extends AbstractExecutable {
         String jars = this.getParam(JARS);
 
         //hadoop conf dir
-        String hadoopConf = null;
-        hadoopConf = System.getProperty("kylin.hadoop.conf.dir");
+        String hadoopConf = System.getProperty("kylin.hadoop.conf.dir");
 
         if (StringUtils.isEmpty(hadoopConf)) {
             throw new RuntimeException("kylin_hadoop_conf_dir is empty, check if there's error in the output of 'kylin.sh start'");

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/query/src/main/java/org/apache/kylin/query/schema/OLAPSchemaFactory.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/schema/OLAPSchemaFactory.java b/query/src/main/java/org/apache/kylin/query/schema/OLAPSchemaFactory.java
index 132e65a..ffa2ee7 100644
--- a/query/src/main/java/org/apache/kylin/query/schema/OLAPSchemaFactory.java
+++ b/query/src/main/java/org/apache/kylin/query/schema/OLAPSchemaFactory.java
@@ -33,6 +33,7 @@ import org.apache.calcite.schema.SchemaFactory;
 import org.apache.calcite.schema.SchemaPlus;
 import org.apache.calcite.util.ConversionUtil;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.measure.MeasureTypeFactory;
@@ -101,10 +102,11 @@ public class OLAPSchemaFactory implements SchemaFactory {
             }
         }
 
+        FileWriter out = null;
         try {
             File tmp = File.createTempFile("olap_model_", ".json");
 
-            FileWriter out = new FileWriter(tmp);
+            out = new FileWriter(tmp);
             out.write("{\n");
             out.write("    \"version\": \"1.0\",\n");
             out.write("    \"defaultSchema\": \"" + majoritySchemaName + "\",\n");
@@ -138,6 +140,8 @@ public class OLAPSchemaFactory implements SchemaFactory {
 
         } catch (IOException e) {
             throw new RuntimeException(e);
+        } finally {
+            IOUtils.closeQuietly(out);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
index 407ee2e..6e096b0 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
@@ -108,6 +108,9 @@ public class StreamingController extends BasicController {
 
         StreamingConfig streamingConfig = deserializeSchemalDesc(streamingRequest);
         KafkaConfig kafkaConfig = deserializeKafkaSchemalDesc(streamingRequest);
+        if(streamingConfig == null || kafkaConfig == null){
+            return streamingRequest;
+        }
         boolean saveStreamingSuccess = false, saveKafkaSuccess = false;
 
         try {

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java
----------------------------------------------------------------------
diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java
index db516bb..ed6da72 100644
--- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java
+++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/RowCounterCLI.java
@@ -21,6 +21,7 @@ package org.apache.kylin.storage.hbase.util;
 import java.io.IOException;
 import java.util.Iterator;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Connection;
@@ -43,6 +44,7 @@ public class RowCounterCLI {
 
         if (args == null || args.length != 3) {
             System.out.println("Usage: hbase org.apache.hadoop.util.RunJar kylin-job-latest.jar org.apache.kylin.job.tools.RowCounterCLI [HTABLE_NAME] [STARTKEY] [ENDKEY]");
+            return;
         }
 
         System.out.println(args[0]);
@@ -71,20 +73,24 @@ public class RowCounterCLI {
 
         logger.info("My Scan " + scan.toString());
 
-        Connection conn = ConnectionFactory.createConnection(conf);
-        Table tableInterface = conn.getTable(TableName.valueOf(htableName));
+        Connection conn = null;
+        try {
+            conn = ConnectionFactory.createConnection(conf);
+            Table tableInterface = conn.getTable(TableName.valueOf(htableName));
 
-        Iterator<Result> iterator = tableInterface.getScanner(scan).iterator();
-        int counter = 0;
-        while (iterator.hasNext()) {
-            iterator.next();
-            counter++;
-            if (counter % 1000 == 1) {
-                System.out.println("number of rows: " + counter);
+            Iterator<Result> iterator = tableInterface.getScanner(scan).iterator();
+            int counter = 0;
+            while (iterator.hasNext()) {
+                iterator.next();
+                counter++;
+                if (counter % 1000 == 1) {
+                    System.out.println("number of rows: " + counter);
+                }
             }
+            System.out.println("number of rows: " + counter);
+            tableInterface.close();
+        }finally {
+            IOUtils.closeQuietly(conn);
         }
-        System.out.println("number of rows: " + counter);
-        tableInterface.close();
-        conn.close();
     }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/storage-hbase/src/main/java/org/apache/kylin/storage/hdfs/HDFSResourceStore.java
----------------------------------------------------------------------
diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hdfs/HDFSResourceStore.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hdfs/HDFSResourceStore.java
index 6744805..31f68e8 100644
--- a/storage-hbase/src/main/java/org/apache/kylin/storage/hdfs/HDFSResourceStore.java
+++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hdfs/HDFSResourceStore.java
@@ -49,7 +49,7 @@ public class HDFSResourceStore extends ResourceStore {
 
     private FileSystem fs;
 
-    public HDFSResourceStore(KylinConfig kylinConfig) throws Exception {
+    public HDFSResourceStore(KylinConfig kylinConfig) throws IOException {
         super(kylinConfig);
         String metadataUrl = kylinConfig.getMetadataUrl();
         int cut = metadataUrl.indexOf('@');
@@ -73,7 +73,7 @@ public class HDFSResourceStore extends ResourceStore {
 
     }
 
-    private void createMetaFolder(Path metaDirName, KylinConfig kylinConfig) throws Exception {
+    private void createMetaFolder(Path metaDirName, KylinConfig kylinConfig) throws IOException {
         //create hdfs meta path
         if (!fs.exists(metaDirName)) {
             fs.mkdirs(metaDirName);

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c16323b/tool/src/main/java/org/apache/kylin/tool/CubeMetaExtractor.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/CubeMetaExtractor.java b/tool/src/main/java/org/apache/kylin/tool/CubeMetaExtractor.java
index 35831f7..4e80708 100644
--- a/tool/src/main/java/org/apache/kylin/tool/CubeMetaExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/CubeMetaExtractor.java
@@ -274,7 +274,7 @@ public class CubeMetaExtractor extends AbstractInfoExtractor {
                 objectMapper.writeValue(f, rootNode);
             }
         } catch (JsonProcessingException ex) {
-            logger.info("cannot parse file {}", f);
+            logger.info("cannot parse file {}", f, ex);
         }
     }