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 2015/12/22 09:44:16 UTC
[18/50] kylin git commit: KYLIN-1166 CubeMigrationCLI should disable
and purge the cube
KYLIN-1166 CubeMigrationCLI should disable and purge the cube
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2b0c3a50
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2b0c3a50
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2b0c3a50
Branch: refs/heads/master
Commit: 2b0c3a5038128bf0e80746e312cb2387e66c1f5b
Parents: 1cd1896
Author: shaofengshi <sh...@apache.org>
Authored: Wed Nov 25 14:39:35 2015 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Wed Nov 25 14:40:07 2015 +0800
----------------------------------------------------------------------
.../kylin/job/tools/CubeMigrationCLI.java | 47 ++++++++++++++++----
1 file changed, 39 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/2b0c3a50/job/src/main/java/org/apache/kylin/job/tools/CubeMigrationCLI.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/tools/CubeMigrationCLI.java b/job/src/main/java/org/apache/kylin/job/tools/CubeMigrationCLI.java
index ca756d1..962a4ee 100644
--- a/job/src/main/java/org/apache/kylin/job/tools/CubeMigrationCLI.java
+++ b/job/src/main/java/org/apache/kylin/job/tools/CubeMigrationCLI.java
@@ -18,11 +18,6 @@
package org.apache.kylin.job.tools;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
@@ -51,7 +46,10 @@ import org.apache.kylin.metadata.realization.RealizationType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jdo.identity.ObjectIdentity;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
/**
* Created by honma on 9/3/14.
@@ -126,6 +124,7 @@ public class CubeMigrationCLI {
if (Boolean.parseBoolean(copyAcl) == true) {
copyACL(cube);
}
+ purgeAndDisable(cubeName); // this should be the last action
if (realExecute.equalsIgnoreCase("true")) {
doOpts();
@@ -178,7 +177,7 @@ public class CubeMigrationCLI {
operations.add(new Opt(OptType.CHANGE_HTABLE_HOST, new Object[] { segment.getStorageLocationIdentifier() }));
}
}
-
+
private static void copyACL(CubeInstance cube) {
operations.add(new Opt(OptType.COPY_ACL, new Object[] { cube.getUuid() }));
}
@@ -209,6 +208,11 @@ public class CubeMigrationCLI {
operations.add(new Opt(OptType.ADD_INTO_PROJECT, new Object[] { cubeName, projectName }));
}
+
+ private static void purgeAndDisable(String cubeName) throws IOException {
+ operations.add(new Opt(OptType.PURGE_AND_DISABLE, new Object[] { cubeName }));
+ }
+
private static void listCubeRelatedResources(CubeInstance cube, List<String> metaResource, List<String> dictAndSnapshot) throws IOException {
CubeDesc cubeDesc = cube.getDescriptor();
@@ -227,7 +231,7 @@ public class CubeMigrationCLI {
}
private static enum OptType {
- COPY_FILE_IN_META, COPY_DICT_OR_SNAPSHOT, RENAME_FOLDER_IN_HDFS, ADD_INTO_PROJECT, CHANGE_HTABLE_HOST, COPY_ACL
+ COPY_FILE_IN_META, COPY_DICT_OR_SNAPSHOT, RENAME_FOLDER_IN_HDFS, ADD_INTO_PROJECT, CHANGE_HTABLE_HOST, COPY_ACL, PURGE_AND_DISABLE
}
private static class Opt {
@@ -418,6 +422,16 @@ public class CubeMigrationCLI {
}
break;
}
+ case PURGE_AND_DISABLE:{
+ String cubeName = (String) opt.params[0];
+ String cubeResPath = CubeInstance.concatResourcePath(cubeName);
+ Serializer<CubeInstance> cubeSerializer = new JsonSerializer<CubeInstance>(CubeInstance.class);
+ CubeInstance cube = srcStore.getResource(cubeResPath, CubeInstance.class, cubeSerializer);
+ cube.getSegments().clear();
+ cube.setStatus(RealizationStatusEnum.DISABLED);
+ srcStore.putResource(cubeResPath, cube, cubeSerializer);
+ logger.info("Cube " + cubeName + " is purged and disabled in " + srcConfig.getMetadataUrl());
+ }
}
}
@@ -458,6 +472,23 @@ public class CubeMigrationCLI {
logger.info("Undo for ADD_INTO_PROJECT is ignored");
break;
}
+ case COPY_ACL: {
+ String cubeId = (String) opt.params[0];
+ HTableInterface destAclHtable = null;
+ try {
+ destAclHtable = HBaseConnection.get(dstConfig.getMetadataUrl()).getTable(dstConfig.getMetadataUrlPrefix() + "_acl");
+
+ destAclHtable.delete(new Delete(Bytes.toBytes(cubeId)));
+ destAclHtable.flushCommits();
+ } finally {
+ IOUtils.closeQuietly(destAclHtable);
+ }
+ break;
+ }
+ case PURGE_AND_DISABLE: {
+ logger.info("Undo for PURGE_AND_DISABLE is not supported");
+ break;
+ }
}
}
}