Repository: kylin Updated Branches: refs/heads/master 44ee970ca -> 696fb89aa
minor, introduce KylinConfigCannotInitException Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/696fb89a Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/696fb89a Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/696fb89a Branch: refs/heads/master Commit: 696fb89aa2eb684408d1009218f80fe323dffd3b Parents: 44ee970 Author: Hongbin Ma <mahong...@apache.org> Authored: Wed Jul 20 17:19:19 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Wed Jul 20 17:19:34 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/common/KylinConfig.java | 2 +- .../common/KylinConfigCannotInitException.java | 25 ++++++++++++++++++++ .../kylin/common/persistence/ResourceStore.java | 2 +- .../kylin/measure/MeasureTypeFactory.java | 23 ++++++++++++++---- 4 files changed, 45 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/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 b73e5fa..14d7be3 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 @@ -185,7 +185,7 @@ public class KylinConfig extends KylinConfigBase { String kylinHome = getKylinHome(); if (StringUtils.isEmpty(kylinHome)) - throw new RuntimeException("Didn't find KYLIN_CONF or KYLIN_HOME, please set one of them"); + throw new KylinConfigCannotInitException("Didn't find KYLIN_CONF or KYLIN_HOME, please set one of them"); String path = kylinHome + File.separator + "conf"; return getKylinPropertiesFile(path); http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java new file mode 100644 index 0000000..7113872 --- /dev/null +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.kylin.common; + +public class KylinConfigCannotInitException extends RuntimeException { + public KylinConfigCannotInitException(String message) { + super(message); + } +} http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java index 99a9695..532e7aa 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java @@ -69,7 +69,7 @@ abstract public class ResourceStore { try { knownImpl.add(ClassUtil.forName("org.apache.kylin.storage.hbase.HBaseResourceStore", ResourceStore.class)); } catch (Throwable e) { - logger.warn("Failed to load ResourceStore impl class: " + e.toString()); + logger.warn("Failed to load HBaseResourceStore impl class: " + e.toString()); } } return knownImpl; http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java index d7a9305..17d841a 100644 --- a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java +++ b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigCannotInitException; import org.apache.kylin.measure.basic.BasicMeasureType; import org.apache.kylin.measure.bitmap.BitmapMeasureType; import org.apache.kylin.measure.dim.DimCountDistinctMeasureType; @@ -31,6 +32,8 @@ import org.apache.kylin.measure.raw.RawMeasureType; import org.apache.kylin.measure.topn.TopNMeasureType; import org.apache.kylin.metadata.datatype.DataType; import org.apache.kylin.metadata.datatype.DataTypeSerializer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -62,6 +65,8 @@ import com.google.common.collect.Maps; */ abstract public class MeasureTypeFactory<T> { + private static final Logger logger = LoggerFactory.getLogger(MeasureTypeFactory.class); + /** * Create a measure type with specified aggregation function and data type. * @@ -102,12 +107,19 @@ abstract public class MeasureTypeFactory<T> { factoryInsts.add(new RawMeasureType.Factory()); factoryInsts.add(new ExtendedColumnMeasureType.Factory()); - for (String customFactory : KylinConfig.getInstanceFromEnv().getCubeCustomMeasureTypes().values()) { - try { - factoryInsts.add((MeasureTypeFactory<?>) Class.forName(customFactory).newInstance()); - } catch (Exception e) { - throw new IllegalArgumentException("Unrecognized MeasureTypeFactory classname: " + customFactory, e); + logger.info("Checking custom measure types from kylin config"); + + try { + for (String customFactory : KylinConfig.getInstanceFromEnv().getCubeCustomMeasureTypes().values()) { + try { + logger.info("Checking custom measure types from kylin config: " + customFactory); + factoryInsts.add((MeasureTypeFactory<?>) Class.forName(customFactory).newInstance()); + } catch (Exception e) { + throw new IllegalArgumentException("Unrecognized MeasureTypeFactory classname: " + customFactory, e); + } } + } catch (KylinConfigCannotInitException e) { + logger.warn("Will not add custome MeasureTypeFactory as KYLIN_CONF nor KYLIN_HOME is set"); } // register factories & data type serializers @@ -120,6 +132,7 @@ abstract public class MeasureTypeFactory<T> { throw new IllegalArgumentException("Aggregation data type name '" + dataTypeName + "' must be in lower case"); Class<? extends DataTypeSerializer<?>> serializer = factory.getAggrDataTypeSerializer(); + logger.info("registering " + dataTypeName); DataType.register(dataTypeName); DataTypeSerializer.register(dataTypeName, serializer); List<MeasureTypeFactory<?>> list = factories.get(funcName);