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 2016/06/30 02:44:29 UTC

kylin git commit: Revert "minor, refactor code to ease integrate with coding tool"

Repository: kylin
Updated Branches:
  refs/heads/master b5bed2497 -> b075d25fa


Revert "minor, refactor code to ease integrate with coding tool"

This reverts commit b5bed249725fdc03a945b1fff2f209770c8f26dc.


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

Branch: refs/heads/master
Commit: b075d25fab401d30f13dfcb17425ee72a07c004e
Parents: b5bed24
Author: Li Yang <li...@apache.org>
Authored: Thu Jun 30 10:43:39 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Jun 30 10:43:39 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/common/KylinConfigBase.java    |  5 +++
 .../realization/RealizationRegistry.java        | 39 +++++++-------------
 2 files changed, 19 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b075d25f/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index e75609c..84c4db9 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -201,6 +201,11 @@ abstract public class KylinConfigBase implements Serializable {
         return new StringBuffer(root).append(StringUtils.replaceChars(getMetadataUrlPrefix(), ':', '-')).append("/").toString();
     }
 
+    public String[] getRealizationProviders() {
+        return getOptionalStringArray("kylin.realization.providers", //
+                new String[] { "org.apache.kylin.cube.CubeManager", "org.apache.kylin.storage.hybrid.HybridManager", "org.apache.kylin.invertedindex.IIManager" });
+    }
+
     public CliCommandExecutor getCliCommandExecutor() throws IOException {
         CliCommandExecutor exec = new CliCommandExecutor();
         if (getRunAsRemoteCommand()) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/b075d25f/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
index b317444..e6b1a86 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.util.ClassUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -80,24 +81,19 @@ public class RealizationRegistry {
         providers = Maps.newConcurrentMap();
 
         // use reflection to load providers
-        // Note: keep "Class.forName" and "getMethod" on same line, allow detection of the use of reflection
-        try {
-            IRealizationProvider p = (IRealizationProvider) Class.forName("org.apache.kylin.cube.CubeManager").getMethod("getInstance", KylinConfig.class).invoke(null, config);
-            providers.put(p.getRealizationType(), p);
-        } catch (Exception | NoClassDefFoundError e) {
-            logEx(e);
-        }
-        try {
-            IRealizationProvider p = (IRealizationProvider) Class.forName("org.apache.kylin.storage.hybrid.HybridManager").getMethod("getInstance", KylinConfig.class).invoke(null, config);
-            providers.put(p.getRealizationType(), p);
-        } catch (Exception | NoClassDefFoundError e) {
-            logEx(e);
-        }
-        try {
-            IRealizationProvider p = (IRealizationProvider) Class.forName("org.apache.kylin.invertedindex.IIManager").getMethod("getInstance", KylinConfig.class).invoke(null, config);
-            providers.put(p.getRealizationType(), p);
-        } catch (Exception | NoClassDefFoundError e) {
-            logEx(e);
+        String[] providerNames = config.getRealizationProviders();
+        for (String clsName : providerNames) {
+            try {
+                Class<? extends IRealizationProvider> cls = ClassUtil.forName(clsName, IRealizationProvider.class);
+                IRealizationProvider p = (IRealizationProvider) cls.getMethod("getInstance", KylinConfig.class).invoke(null, config);
+                providers.put(p.getRealizationType(), p);
+
+            } catch (Exception | NoClassDefFoundError e) {
+                if (e instanceof ClassNotFoundException || e instanceof NoClassDefFoundError)
+                    logger.warn("Failed to create realization provider " + e);
+                else
+                    logger.error("Failed to create realization provider", e);
+            }
         }
 
         if (providers.isEmpty())
@@ -106,13 +102,6 @@ public class RealizationRegistry {
         logger.info("RealizationRegistry is " + providers);
     }
 
-    private void logEx(Throwable e) {
-        if (e instanceof ClassNotFoundException || e instanceof NoClassDefFoundError)
-            logger.warn("Failed to create realization provider ", e);
-        else
-            logger.error("Failed to create realization provider", e);
-    }
-
     public Set<RealizationType> getRealizationTypes() {
         return Collections.unmodifiableSet(providers.keySet());
     }