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 2015/07/23 07:53:58 UTC

incubator-kylin git commit: KYLIN-875 Fix ClassNotFoundException in ResourceStore

Repository: incubator-kylin
Updated Branches:
  refs/heads/0.8 3823545a0 -> 715ebff97


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/715ebff9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/715ebff9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/715ebff9

Branch: refs/heads/0.8
Commit: 715ebff97a31ecfbbff193c02998d3e5fd1661e6
Parents: 3823545
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/715ebff9/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) {