From 8532b9131ff91ba54c4f455c06166bf2eff6d6dd Mon Sep 17 00:00:00 2001 From: Calvin Kirs Date: Thu, 12 Dec 2024 14:56:40 +0800 Subject: [PATCH 1/2] [Fix](Insert-Job)Resolving Task Status Discrepancies in Query Execution Records When querying the execution records of tasks, the current system has two sources that may describe task status: Task status in the scheduling module: Represents the processing status of tasks within the scheduling system. Task status in LoadManager: Specifically refers to the status of Insert-type tasks, containing more detailed execution information. When the data in the LoadManager is deleted or expires, the completion status will revert to the task status from the scheduling system, which could cause confusion. Therefore, consistency needs to be maintained. Since these two sources may have inconsistencies in their status information, they can easily cause confusion for users and developers. --- .../org/apache/doris/job/extensions/insert/InsertTask.java | 2 +- regression-test/suites/job_p0/test_base_insert_job.groovy | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertTask.java b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertTask.java index 23a367d5d6e1a1..a577250dc865ed 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertTask.java @@ -244,7 +244,7 @@ public TRow getTvfInfo(String jobName) { trow.addToColumnValue(new TCell().setStringVal(String.valueOf(getJobId()))); trow.addToColumnValue(new TCell().setStringVal(jobName)); trow.addToColumnValue(new TCell().setStringVal(getJobId() + LABEL_SPLITTER + getTaskId())); - trow.addToColumnValue(new TCell().setStringVal(jobInfo.getState().name())); + trow.addToColumnValue(new TCell().setStringVal(getStatus().name())); trow.addToColumnValue(new TCell().setStringVal(getErrorMsg())); // create time trow.addToColumnValue(new TCell().setStringVal(TimeUtils.longToTimeString(getCreateTimeMs()))); diff --git a/regression-test/suites/job_p0/test_base_insert_job.groovy b/regression-test/suites/job_p0/test_base_insert_job.groovy index fc97e367483b86..2b30f839061fc4 100644 --- a/regression-test/suites/job_p0/test_base_insert_job.groovy +++ b/regression-test/suites/job_p0/test_base_insert_job.groovy @@ -116,7 +116,7 @@ suite("test_base_insert_job") { def taskStatus = sql """select status from tasks("type"="insert") where JobName ='${jobName}'""" for (int i = 0; i < taskStatus.size(); i++) { - assert taskStatus.get(i).get(0) =="CANCELLED" || taskStatus.get(i).get(0) =="FINISHED" + assert taskStatus.get(i).get(0) =="CANCELLED" || taskStatus.get(i).get(0) =="SUCCESS" } sql """ CREATE JOB ${jobMixedName} ON SCHEDULE every 1 second DO insert into ${tableName} (timestamp, type, user_id) values ('2023-03-18','1','12213'); @@ -168,7 +168,7 @@ suite("test_base_insert_job") { // table should have one record after job finished assert datas.size() == 1 // one time job only has one task. when job finished, task status should be FINISHED - assert datas.get(0).get(0) == "FINISHED" + assert datas.get(0).get(0) == "SUCCESS" // check table data def dataCount1 = sql """select count(1) from ${tableName} where user_id=1001""" assert dataCount1.get(0).get(0) == 1 From 00a5a3d6cc8d7ac9bfbd4bcfdd2953004fe8d30b Mon Sep 17 00:00:00 2001 From: Calvin Kirs Date: Thu, 12 Dec 2024 14:59:37 +0800 Subject: [PATCH 2/2] Update test_base_insert_job.groovy --- regression-test/suites/job_p0/test_base_insert_job.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression-test/suites/job_p0/test_base_insert_job.groovy b/regression-test/suites/job_p0/test_base_insert_job.groovy index 2b30f839061fc4..33ae28443b290a 100644 --- a/regression-test/suites/job_p0/test_base_insert_job.groovy +++ b/regression-test/suites/job_p0/test_base_insert_job.groovy @@ -116,7 +116,7 @@ suite("test_base_insert_job") { def taskStatus = sql """select status from tasks("type"="insert") where JobName ='${jobName}'""" for (int i = 0; i < taskStatus.size(); i++) { - assert taskStatus.get(i).get(0) =="CANCELLED" || taskStatus.get(i).get(0) =="SUCCESS" + assert taskStatus.get(i).get(0) =="CANCELED" || taskStatus.get(i).get(0) =="SUCCESS" } sql """ CREATE JOB ${jobMixedName} ON SCHEDULE every 1 second DO insert into ${tableName} (timestamp, type, user_id) values ('2023-03-18','1','12213');