You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by qh...@apache.org on 2015/07/27 11:21:18 UTC
[16/52] [abbrv] incubator-kylin git commit: KYLIN-875 Fix
ClassNotFoundException in ResourceStore
KYLIN-875 Fix ClassNotFoundException in ResourceStore
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/03ab4bb3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/03ab4bb3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/03ab4bb3
Branch: refs/heads/0.8
Commit: 03ab4bb38a6c7b8b1bc71007e184d0543bbebbdc
Parents: 037c255
Author: Li, Yang <ya...@ebay.com>
Authored: Thu Jul 23 13:53:49 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jul 23 13:53:49 2015 +0800
----------------------------------------------------------------------
.../kylin/common/persistence/ResourceStore.java | 26 +++++++++++---------
1 file changed, 14 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/03ab4bb3/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 a89d30f..3bbcb0a 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
@@ -58,26 +58,28 @@ abstract public class ResourceStore {
public static final String CUBE_STATISTICS_ROOT = "/cube_statistics";
- private static ConcurrentHashMap<KylinConfig, ResourceStore> CACHE = new ConcurrentHashMap<KylinConfig, ResourceStore>();
+ private static final ConcurrentHashMap<KylinConfig, ResourceStore> CACHE = new ConcurrentHashMap<KylinConfig, ResourceStore>();
- public static final ArrayList<Class<? extends ResourceStore>> knownImpl = new ArrayList<Class<? extends ResourceStore>>();
-
- static {
- knownImpl.add(FileResourceStore.class);
- try {
- knownImpl.add(ClassUtil.forName("org.apache.kylin.storage.hbase.HBaseResourceStore", ResourceStore.class));
- } catch (ClassNotFoundException e) {
- logger.warn(e.toString());
+ private static final ArrayList<Class<? extends ResourceStore>> knownImpl = new ArrayList<Class<? extends ResourceStore>>();
+
+ private static ArrayList<Class<? extends ResourceStore>> getKnownImpl() {
+ if (knownImpl.isEmpty()) {
+ knownImpl.add(FileResourceStore.class);
+ 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);
+ }
}
+ return knownImpl;
}
-
+
public static ResourceStore getStore(KylinConfig kylinConfig) {
ResourceStore r = CACHE.get(kylinConfig);
List<Throwable> es = new ArrayList<Throwable>();
if (r == null) {
logger.info("Using metadata url " + kylinConfig.getMetadataUrl() + " for resource store");
- for (Class<? extends ResourceStore> cls : knownImpl) {
-
+ for (Class<? extends ResourceStore> cls : getKnownImpl()) {
try {
r = cls.getConstructor(KylinConfig.class).newInstance(kylinConfig);
} catch (Exception e) {