From 53e976d9fb672633ef7cd4d50428bb55cbf19f3f Mon Sep 17 00:00:00 2001 From: zhengdong Date: Fri, 1 Sep 2017 17:19:23 +0800 Subject: [PATCH] KYLIN-2753 Job duration may become negative after the job resumed from error or paused status --- .../kylin/job/execution/DefaultChainedExecutable.java | 13 ++----------- .../org/apache/kylin/job/execution/ExecutableManager.java | 11 +++++++++-- 2 files changed, 11 insertions(+), 13 deletions(-) mode change 100644 => 100755 core-job/src/main/java/org/apache/kylin/job/execution/DefaultChainedExecutable.java mode change 100644 => 100755 core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java diff --git a/core-job/src/main/java/org/apache/kylin/job/execution/DefaultChainedExecutable.java b/core-job/src/main/java/org/apache/kylin/job/execution/DefaultChainedExecutable.java old mode 100644 new mode 100755 index 4f5c02b14..cbd49ae54 --- a/core-job/src/main/java/org/apache/kylin/job/execution/DefaultChainedExecutable.java +++ b/core-job/src/main/java/org/apache/kylin/job/execution/DefaultChainedExecutable.java @@ -69,20 +69,11 @@ public class DefaultChainedExecutable extends AbstractExecutable implements Chai @Override protected void onExecuteStart(ExecutableContext executableContext) { - Map info = Maps.newHashMap(); final long startTime = getStartTime(); if (startTime > 0) { - final long endTime = getEndTime(); - if (endTime > 0) { - long interruptTime = System.currentTimeMillis() - endTime + getInterruptTime(); - info.putAll(getManager().getJobOutput(getId()).getInfo()); - info.put(START_TIME, Long.toString(startTime)); - info.put(INTERRUPT_TIME, Long.toString(interruptTime)); - getManager().updateJobOutput(getId(), ExecutableState.RUNNING, info, null); - } else { - getManager().updateJobOutput(getId(), ExecutableState.RUNNING, null, null); - } + getManager().updateJobOutput(getId(), ExecutableState.RUNNING, null, null); } else { + Map info = Maps.newHashMap(); info.put(START_TIME, Long.toString(System.currentTimeMillis())); getManager().updateJobOutput(getId(), ExecutableState.RUNNING, info, null); } diff --git a/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java b/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java old mode 100644 new mode 100755 index f8fb980e7..0439dddf6 --- a/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java +++ b/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java @@ -329,7 +329,7 @@ public class ExecutableManager { if (job == null) { return; } - + Map info = null; if (job instanceof DefaultChainedExecutable) { List tasks = ((DefaultChainedExecutable) job).getTasks(); for (AbstractExecutable task : tasks) { @@ -338,8 +338,15 @@ public class ExecutableManager { break; } } + final long endTime = job.getEndTime(); + if (endTime != 0) { + long interruptTime = System.currentTimeMillis() - endTime + job.getInterruptTime(); + info = Maps.newHashMap(getJobOutput(jobId).getInfo()); + info.put(AbstractExecutable.INTERRUPT_TIME, Long.toString(interruptTime)); + info.remove(AbstractExecutable.END_TIME); + } } - updateJobOutput(jobId, ExecutableState.READY, null, null); + updateJobOutput(jobId, ExecutableState.READY, info, null); } public void discardJob(String jobId) { -- 2.14.1