KYLIN-3004 Delete cube segment validation Signed-off-by: lidongsjtu <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/07142889 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/07142889 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/07142889 Branch: refs/heads/master Commit: 07142889d4423b3211be625eceb8fd093fd34a22 Parents: c9bcc5b Author: liapan <[email protected]> Authored: Mon Dec 11 11:28:16 2017 +0800 Committer: lidongsjtu <[email protected]> Committed: Wed Dec 20 23:30:25 2017 +0800 ---------------------------------------------------------------------- .../src/main/java/org/apache/kylin/rest/msg/Message.java | 4 ---- .../java/org/apache/kylin/rest/service/CubeService.java | 9 +++++---- 2 files changed, 5 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/07142889/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java ---------------------------------------------------------------------- diff --git a/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java b/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java index 02e4020..168d476 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java +++ b/server-base/src/main/java/org/apache/kylin/rest/msg/Message.java @@ -61,10 +61,6 @@ public class Message { return "Inconsistent cube desc signature for '%s', if it's right after an upgrade, please try 'Edit CubeDesc' to delete the 'signature' field. Or use 'bin/metastore.sh refresh-cube-signature' to batch refresh all cubes' signatures, then reload metadata to take effect."; } - public String getDELETE_NOT_FIRST_LAST_SEG() { - return "Cannot delete segment '%s' as it is neither the first nor the last segment."; - } - public String getDELETE_NOT_READY_SEG() { return "Cannot delete segment '%s' as its status is not READY. Discard the on-going job for it."; } http://git-wip-us.apache.org/repos/asf/kylin/blob/07142889/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 d218bfa..3a6f275 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 @@ -489,10 +489,6 @@ public class CubeService extends BasicService implements InitializingBean { aclEvaluate.hasProjectOperationPermission(cube.getProjectInstance()); Message msg = MsgPicker.getMsg(); - if (!segmentName.equals(cube.getSegments().get(0).getName()) - && !segmentName.equals(cube.getSegments().get(cube.getSegments().size() - 1).getName())) { - throw new BadRequestException(String.format(msg.getDELETE_NOT_FIRST_LAST_SEG(), segmentName)); - } CubeSegment toDelete = null; for (CubeSegment seg : cube.getSegments()) { if (seg.getName().equals(segmentName)) { @@ -508,6 +504,11 @@ public class CubeService extends BasicService implements InitializingBean { throw new BadRequestException(String.format(msg.getDELETE_NOT_READY_SEG(), segmentName)); } + if (!segmentName.equals(cube.getSegments().get(0).getName()) + && !segmentName.equals(cube.getSegments().get(cube.getSegments().size() - 1).getName())) { + logger.warn(String.format("Cube [%s] gaps caused by deleting segment [%s].", cube.getName(), segmentName)); + } + CubeUpdate update = new CubeUpdate(cube); update.setToRemoveSegs(new CubeSegment[] { toDelete }); return CubeManager.getInstance(getConfig()).updateCube(update);
