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

xxyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new 2e937c6  KYLIN-4686 clean metadata support to delete all jobs
2e937c6 is described below

commit 2e937c62990ecbc9f77f6f377b7bd4cf1dbdc230
Author: chuxiao <chux...@didichuxing.com>
AuthorDate: Thu Aug 6 11:10:20 2020 +0800

    KYLIN-4686 clean metadata support to delete all jobs
---
 .../main/java/org/apache/kylin/rest/job/MetadataCleanupJob.java  | 4 ++--
 .../java/org/apache/kylin/rest/job/MetadataCleanupJobTest.java   | 4 ++--
 tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java | 9 ++++++++-
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/job/MetadataCleanupJob.java 
b/server-base/src/main/java/org/apache/kylin/rest/job/MetadataCleanupJob.java
index 78302bb..a9a7f12 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/job/MetadataCleanupJob.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/job/MetadataCleanupJob.java
@@ -80,7 +80,7 @@ public class MetadataCleanupJob {
     }
 
     // function entrance
-    public Map<String, Long> cleanup(boolean delete, int jobOutdatedDays) 
throws Exception {
+    public Map<String, Long> cleanup(boolean delete, int jobOutdatedDays, 
boolean deleteAllJobs) throws Exception {
         CubeManager cubeManager = CubeManager.getInstance(config);
         long newResourceTimeCut = System.currentTimeMillis() - 
NEW_RESOURCE_THREADSHOLD_MS;
         FileSystem fs = 
HadoopUtil.getWorkingFileSystem(HadoopUtil.getCurrentConfiguration());
@@ -168,7 +168,7 @@ public class MetadataCleanupJob {
         List<ExecutablePO> allExecutable = executableDao.getJobs();
         for (ExecutablePO executable : allExecutable) {
             long lastModified = executable.getLastModified();
-            if (lastModified < outdatedJobTimeCut && 
isJobComplete(executableDao, executable)) {
+            if (lastModified < outdatedJobTimeCut && (deleteAllJobs || 
isJobComplete(executableDao, executable))) {
                 String jobResPath = ResourceStore.EXECUTE_RESOURCE_ROOT + "/" 
+ executable.getUuid();
                 String jobOutputResPath = 
ResourceStore.EXECUTE_OUTPUT_RESOURCE_ROOT + "/" + executable.getUuid();
                 long outputLastModified = getTimestamp(jobOutputResPath);
diff --git 
a/server-base/src/test/java/org/apache/kylin/rest/job/MetadataCleanupJobTest.java
 
b/server-base/src/test/java/org/apache/kylin/rest/job/MetadataCleanupJobTest.java
index ad819e6..bed1a9c 100644
--- 
a/server-base/src/test/java/org/apache/kylin/rest/job/MetadataCleanupJobTest.java
+++ 
b/server-base/src/test/java/org/apache/kylin/rest/job/MetadataCleanupJobTest.java
@@ -45,7 +45,7 @@ public class MetadataCleanupJobTest {
         // file resource store may lose timestamp precision with millis 
second, set last modified as 2000
         staticCreateTestMetadata(false, new ResetTimeHook(2000, 
"src/test/resources/test_meta"));
         MetadataCleanupJob metadataCleanupJob = new MetadataCleanupJob();
-        Map<String, Long> cleanupMap = metadataCleanupJob.cleanup(false, 30);
+        Map<String, Long> cleanupMap = metadataCleanupJob.cleanup(false, 30, 
false);
         Assert.assertEquals(7, cleanupMap.size());
         for (long timestamp : cleanupMap.values()) {
             Assert.assertEquals(2000, timestamp);
@@ -56,7 +56,7 @@ public class MetadataCleanupJobTest {
     public void testNotCleanUp() throws Exception {
         staticCreateTestMetadata(false, new 
ResetTimeHook(System.currentTimeMillis(), "src/test/resources/test_meta"));
         MetadataCleanupJob metadataCleanupJob = new MetadataCleanupJob();
-        Map<String, Long> cleanupMap = metadataCleanupJob.cleanup(false, 30);
+        Map<String, Long> cleanupMap = metadataCleanupJob.cleanup(false, 30, 
false);
         Assert.assertEquals(0, cleanupMap.size());
     }
 
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 1e5214d..1cb5df7 100644
--- a/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
+++ b/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
@@ -39,6 +39,11 @@ public class MetadataCleanupJob extends AbstractApplication {
             .isRequired(false).withDescription("Specify how many days of job 
metadata keeping. Default 30 days")
             .create("jobThreshold");
 
+    @SuppressWarnings("static-access")
+    private static final Option OPTION_DELETE_ALL_JOBS = 
OptionBuilder.withArgName("deleteAllJobs").hasArg()
+            .isRequired(false).withDescription("Delte all jobs include error 
jobs. Default false")
+            .create("deleteAllJobs");
+
     public static void main(String[] args) throws Exception {
         new MetadataCleanupJob().execute(args);
     }
@@ -48,6 +53,7 @@ public class MetadataCleanupJob extends AbstractApplication {
         Options options = new Options();
         options.addOption(OPTION_DELETE);
         options.addOption(OPTION_THRESHOLD_FOR_JOB);
+        options.addOption(OPTION_DELETE_ALL_JOBS);
         return options;
     }
 
@@ -59,7 +65,8 @@ public class MetadataCleanupJob extends AbstractApplication {
         int jobOutdatedDays = optionsHelper.hasOption(OPTION_THRESHOLD_FOR_JOB)
                 ? 
Integer.parseInt(optionsHelper.getOptionValue(OPTION_THRESHOLD_FOR_JOB))
                 : DEFAULT_JOB_OUTDATED_THRESHOLD_DAYS;
+        boolean deleteAllJobs = 
Boolean.parseBoolean(optionsHelper.getOptionValue(OPTION_DELETE_ALL_JOBS));
         
-        new org.apache.kylin.rest.job.MetadataCleanupJob().cleanup(delete, 
jobOutdatedDays);
+        new org.apache.kylin.rest.job.MetadataCleanupJob().cleanup(delete, 
jobOutdatedDays, deleteAllJobs);
     }
 }

Reply via email to