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

morningman pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new 1dbbdeedde7 branch-4.0: [fix](job scheduler) Record task finish time 
on execution failure #66232 (#66270)
1dbbdeedde7 is described below

commit 1dbbdeedde7c59958a7985d2b4b8ff9661b7ad93
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Jul 30 19:38:12 2026 +0800

    branch-4.0: [fix](job scheduler) Record task finish time on execution 
failure #66232 (#66270)
    
    Cherry-picked from #66232
    
    Co-authored-by: yujun <[email protected]>
---
 .../org/apache/doris/job/task/AbstractTask.java    |  1 +
 .../doris/job/base/AbstractJobStatusTest.java      | 23 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/job/task/AbstractTask.java 
b/fe/fe-core/src/main/java/org/apache/doris/job/task/AbstractTask.java
index 4e2ac653cf7..9cf70edb655 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/job/task/AbstractTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/job/task/AbstractTask.java
@@ -71,6 +71,7 @@ public abstract class AbstractTask implements Task {
             return false;
         }
         status = TaskStatus.FAILED;
+        setFinishTimeMs(System.currentTimeMillis());
         if (!isCallable()) {
             return false;
         }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/job/base/AbstractJobStatusTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/job/base/AbstractJobStatusTest.java
index faf39164fc3..588aae4c0ca 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/job/base/AbstractJobStatusTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/job/base/AbstractJobStatusTest.java
@@ -66,6 +66,18 @@ class AbstractJobStatusTest {
         }
     }
 
+    private static class FailingTask extends DummyTask {
+        FailingTask(long taskId) {
+            super(taskId);
+            setJobId(1L);
+        }
+
+        @Override
+        public void run() throws JobException {
+            throw new JobException("task failed");
+        }
+    }
+
     private static class DummyJob extends AbstractJob<DummyTask, Void> {
         private final List<DummyTask> history = new ArrayList<>();
 
@@ -131,6 +143,17 @@ class AbstractJobStatusTest {
         Assertions.assertEquals(JobStatus.PENDING, job.getJobStatus());
     }
 
+    @Test
+    void testTaskFailureSetsFinishTime() throws Exception {
+        FailingTask task = new FailingTask(100L);
+
+        task.runTask();
+
+        Assertions.assertEquals(TaskStatus.FAILED, task.getStatus());
+        Assertions.assertNotNull(task.getFinishTimeMs());
+        Assertions.assertEquals("task failed", task.getErrMsg());
+    }
+
     @Test
     void testPendingFromRunning() throws Exception {
         DummyJob job = new DummyJob(JobStatus.RUNNING);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to