Repository: kylin
Updated Branches:
  refs/heads/master 1264ff39b -> b3310dcdc


KYLIN-2602 Add optional job threshold arg for MetadataCleanupJob


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

Branch: refs/heads/master
Commit: b3310dcdc0f9ac99006eb4d1a0910de9c43f22fd
Parents: 1264ff3
Author: kangkaisen <kangkai...@163.com>
Authored: Thu May 11 10:11:40 2017 +0800
Committer: kangkaisen <kangkai...@163.com>
Committed: Thu May 11 10:13:58 2017 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/tool/MetadataCleanupJob.java     | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b3310dcd/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
----------------------------------------------------------------------
diff --git a/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java 
b/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
index 7040dbb..8e17645 100644
--- a/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
+++ b/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
@@ -48,14 +48,17 @@ public class MetadataCleanupJob extends AbstractHadoopJob {
     @SuppressWarnings("static-access")
     private static final Option OPTION_DELETE = 
OptionBuilder.withArgName("delete").hasArg().isRequired(false).withDescription("Delete
 the unused metadata").create("delete");
 
+    @SuppressWarnings("static-access")
+    private static final Option OPTION_THRESHOLD_FOR_JOB = 
OptionBuilder.withArgName("jobThreshold").hasArg().isRequired(false).withDescription("Specify
 how many days of job metadata keeping. Default 30 
days").create("jobThreshold");
+
     protected static final Logger logger = 
LoggerFactory.getLogger(MetadataCleanupJob.class);
 
     boolean delete = false;
 
     private KylinConfig config = null;
 
-    public static final long TIME_THREADSHOLD = 1 * 3600 * 1000L; // 1 hour
-    public static final long TIME_THREADSHOLD_FOR_JOB = 30 * 24 * 3600 * 
1000L; // 30 days
+    private static final long TIME_THREADSHOLD = 1 * 3600 * 1000L; // 1 hour
+    private static final int DEFAULT_DAY_THREADSHOLD_FOR_JOB = 30 ; // 30 days
 
     /*
      * (non-Javadoc)
@@ -68,10 +71,12 @@ public class MetadataCleanupJob extends AbstractHadoopJob {
 
         logger.info("jobs args: " + Arrays.toString(args));
         options.addOption(OPTION_DELETE);
+        options.addOption(OPTION_THRESHOLD_FOR_JOB);
         parseOptions(options, args);
 
         logger.info("options: '" + getOptionsAsString() + "'");
         logger.info("delete option value: '" + getOptionValue(OPTION_DELETE) + 
"'");
+        logger.info("jobThreshold option value: '" + 
getOptionValue(OPTION_THRESHOLD_FOR_JOB) + "'");
         delete = Boolean.parseBoolean(getOptionValue(OPTION_DELETE));
 
         config = KylinConfig.getInstanceFromEnv();
@@ -148,7 +153,10 @@ public class MetadataCleanupJob extends AbstractHadoopJob {
         for (ExecutablePO executable : allExecutable) {
             long lastModified = executable.getLastModified();
             ExecutableOutputPO output = 
executableDao.getJobOutput(executable.getUuid());
-            if (System.currentTimeMillis() - lastModified > 
TIME_THREADSHOLD_FOR_JOB && 
(ExecutableState.SUCCEED.toString().equals(output.getStatus()) || 
ExecutableState.DISCARDED.toString().equals(output.getStatus()))) {
+            int jobThresholdDay = 
optionsHelper.hasOption(OPTION_THRESHOLD_FOR_JOB) ? 
Integer.valueOf(optionsHelper.getOptionValue(OPTION_THRESHOLD_FOR_JOB)) : 
DEFAULT_DAY_THREADSHOLD_FOR_JOB;
+            long jobThresholdTime = jobThresholdDay * 24 * 3600 * 1000L;
+
+            if (System.currentTimeMillis() - lastModified > jobThresholdTime 
&& (ExecutableState.SUCCEED.toString().equals(output.getStatus()) || 
ExecutableState.DISCARDED.toString().equals(output.getStatus()))) {
                 toDeleteResource.add(ResourceStore.EXECUTE_RESOURCE_ROOT + "/" 
+ executable.getUuid());
                 
toDeleteResource.add(ResourceStore.EXECUTE_OUTPUT_RESOURCE_ROOT + "/" + 
executable.getUuid());
 

Reply via email to