Repository: kylin
Updated Branches:
  refs/heads/master 6519b18fa -> 9706e3055


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/9706e305
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/9706e305
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/9706e305

Branch: refs/heads/master
Commit: 9706e30551ed47165ade083e5820d49e6cfa35be
Parents: 6519b18
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:34:03 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/9706e305/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/9706e305/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) {

Reply via email to