You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/09/04 10:39:52 UTC

[kylin] branch 2.5.x updated: KYLIN-3536 PrepareStatement cache issue when there are new segments built

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch 2.5.x
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/2.5.x by this push:
     new 250d42a  KYLIN-3536 PrepareStatement cache issue when there are new segments built
250d42a is described below

commit 250d42a2e35ac41d91279a8286f3148a34cff7b2
Author: Ma,Gang <ga...@ebay.com>
AuthorDate: Tue Sep 4 17:39:56 2018 +0800

    KYLIN-3536 PrepareStatement cache issue when there are new segments built
    
    Signed-off-by: shaofengshi <sh...@apache.org>
---
 .../org/apache/kylin/rest/service/QueryService.java | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index 16358e4..6b3b379 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -77,6 +77,7 @@ import org.apache.kylin.common.util.DBUtils;
 import org.apache.kylin.common.util.JsonUtil;
 import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.common.util.SetThreadName;
+import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeManager;
 import org.apache.kylin.cube.cuboid.Cuboid;
 import org.apache.kylin.metadata.badquery.BadQueryEntry;
@@ -92,6 +93,7 @@ import org.apache.kylin.metadata.querymeta.ColumnMetaWithType;
 import org.apache.kylin.metadata.querymeta.SelectedColumnMeta;
 import org.apache.kylin.metadata.querymeta.TableMeta;
 import org.apache.kylin.metadata.querymeta.TableMetaWithType;
+import org.apache.kylin.metadata.realization.IRealization;
 import org.apache.kylin.query.QueryConnection;
 import org.apache.kylin.query.relnode.OLAPContext;
 import org.apache.kylin.query.util.PushDownUtil;
@@ -112,6 +114,8 @@ import org.apache.kylin.rest.util.AclEvaluate;
 import org.apache.kylin.rest.util.AclPermissionUtil;
 import org.apache.kylin.rest.util.QueryRequestLimits;
 import org.apache.kylin.rest.util.TableauInterceptor;
+import org.apache.kylin.storage.hybrid.HybridInstance;
+import org.apache.kylin.storage.hybrid.HybridManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -590,7 +594,8 @@ public class QueryService extends BasicService {
                         borrowPrepareContext = false;
                         preparedContext = createPreparedContext(sqlRequest.getProject(), sqlRequest.getSql());
                     }
-                    for(OLAPContext olapContext : preparedContext.olapContexts) {
+                    for (OLAPContext olapContext : preparedContext.olapContexts) {
+                        resetRealizationInContext(olapContext);
                         OLAPContext.registerContext(olapContext);
                     }
                 } else {
@@ -611,6 +616,20 @@ public class QueryService extends BasicService {
         }
     }
 
+    private void resetRealizationInContext(OLAPContext olapContext) {
+        IRealization realization = olapContext.realization;
+        KylinConfig config = getConfig();
+        HybridInstance hybridInstance = HybridManager.getInstance(config).getHybridInstance(realization.getName());
+        if (hybridInstance != null) {
+            olapContext.realization = hybridInstance;
+            return;
+        }
+        CubeInstance cubeInstance = CubeManager.getInstance(config).getCube(realization.getName());
+        if (cubeInstance != null) {
+            olapContext.realization = cubeInstance;
+        }
+    }
+
     protected List<TableMeta> getMetadata(CubeManager cubeMgr, String project) throws SQLException {
 
         Connection conn = null;