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/10/04 08:54:11 UTC

[17/31] kylin git commit: KYLIN-2035 only auto-merge after a READY segment is built

KYLIN-2035 only auto-merge after a READY segment is built


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

Branch: refs/heads/master-cdh5.7
Commit: d366dc1118aeb342a2ace251bc6dfac976f00e14
Parents: 859230d
Author: Li Yang <li...@apache.org>
Authored: Wed Sep 28 11:51:50 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Wed Sep 28 11:51:50 2016 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/kylin/cube/CubeInstance.java  | 12 ++++++++++++
 .../org/apache/kylin/rest/service/CubeService.java     | 13 ++++++++-----
 2 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/d366dc11/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
index cad00e1..720690d 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
@@ -293,6 +293,18 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
         return latest;
     }
 
+    public CubeSegment getLatestBuiltSegment() {
+        CubeSegment latest = null;
+        for (int i = segments.size() - 1; i >= 0; i--) {
+            CubeSegment seg = segments.get(i);
+            if (seg.getLastBuildTime() > 0) {
+                if (latest == null || seg.getLastBuildTime() > latest.getLastBuildTime())
+                    latest = seg;
+            }
+        }
+        return latest;
+    }
+    
     public List<CubeSegment> getSegments() {
         return segments;
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d366dc11/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java b/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
index e446045..4fa07b6 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
@@ -582,15 +582,18 @@ public class CubeService extends BasicService {
     }
 
     public void updateOnNewSegmentReady(String cubeName) {
-        logger.debug("on updateOnNewSegmentReady: " + cubeName);
         final KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
         String serverMode = kylinConfig.getServerMode();
-        logger.debug("server mode: " + serverMode);
         if (Constant.SERVER_MODE_JOB.equals(serverMode.toLowerCase()) || Constant.SERVER_MODE_ALL.equals(serverMode.toLowerCase())) {
-            keepCubeRetention(cubeName);
-            mergeCubeSegment(cubeName);
+            CubeInstance cube = getCubeManager().getCube(cubeName);
+            if (cube != null) {
+                CubeSegment seg = cube.getLatestBuiltSegment();
+                if (seg != null && seg.getStatus() == SegmentStatusEnum.READY) {
+                    keepCubeRetention(cubeName);
+                    mergeCubeSegment(cubeName);
+                }
+            }
         }
-
     }
 
     private void keepCubeRetention(String cubeName) {