Repository: kylin Updated Branches: refs/heads/2.1.x 8edbde557 -> aee88fe94
KYLIN-2753 Job duration may become negative after the job resumed from error or paused status Signed-off-by: Billy Liu <billy...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/aee88fe9 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/aee88fe9 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/aee88fe9 Branch: refs/heads/2.1.x Commit: aee88fe9415bdf3eb2dd4103fee795b03ebac255 Parents: 8edbde5 Author: zhengdong <zhe...@outlook.com> Authored: Mon Jul 24 17:44:00 2017 +0800 Committer: Billy Liu <billy...@apache.org> Committed: Mon Jul 24 21:35:52 2017 +0800 ---------------------------------------------------------------------- .../kylin/job/execution/DefaultChainedExecutable.java | 13 ++----------- .../apache/kylin/job/execution/ExecutableManager.java | 12 +++++++++--- 2 files changed, 11 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/aee88fe9/core-job/src/main/java/org/apache/kylin/job/execution/DefaultChainedExecutable.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 4f5c02b..cbd49ae --- 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<String, String> 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<String, String> info = Maps.newHashMap(); info.put(START_TIME, Long.toString(System.currentTimeMillis())); getManager().updateJobOutput(getId(), ExecutableState.RUNNING, info, null); } http://git-wip-us.apache.org/repos/asf/kylin/blob/aee88fe9/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/ExecutableManager.java b/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java old mode 100644 new mode 100755 index f8fb980..124a5a9 --- 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<String, String> info = null; if (job instanceof DefaultChainedExecutable) { List<AbstractExecutable> tasks = ((DefaultChainedExecutable) job).getTasks(); for (AbstractExecutable task : tasks) { @@ -338,8 +338,14 @@ public class ExecutableManager { break; } } - } - updateJobOutput(jobId, ExecutableState.READY, null, null); + info = Maps.newHashMap(); + final long endTime = job.getEndTime(); + long interruptTime = System.currentTimeMillis() - endTime + job.getInterruptTime(); + info.putAll(getJobOutput(jobId).getInfo()); + info.put(AbstractExecutable.INTERRUPT_TIME, Long.toString(interruptTime)); + info.remove(AbstractExecutable.END_TIME); + } + updateJobOutput(jobId, ExecutableState.READY, info, null); } public void discardJob(String jobId) {