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 <[email protected]>
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);
}
}