From 7357ca62af73b4d3a57cf44361fea1bb92f2aaed Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:03:06 +0800 Subject: [PATCH] [improvement](statistics)Only write editlog for manual analyze task, don't need to do so for auto tasks. #29685 Only write editlog for manual analyze task, don't need to do so for auto tasks to reduce writing editlog. Add error message to job info while task failed. --- .../org/apache/doris/statistics/AnalysisManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java index 7c246b4587..8db50e667f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java @@ -483,7 +483,12 @@ public class AnalysisManager implements Writable { if (taskState.equals(AnalysisState.FINISHED) || taskState.equals(AnalysisState.FAILED)) { info.timeCostInMs = time - info.lastExecTimeInMs; info.lastExecTimeInMs = time; - logCreateAnalysisTask(info); + // Persist task info for manual job. + if (info.jobType.equals(JobType.MANUAL)) { + logCreateAnalysisTask(info); + } else { + replayCreateAnalysisTask(info); + } } info.lastExecTimeInMs = time; AnalysisInfo job = analysisJobInfoMap.get(info.jobId); @@ -494,6 +499,10 @@ public class AnalysisManager implements Writable { // Synchronize the job state change in job level. synchronized (job) { job.lastExecTimeInMs = time; + if (taskState.equals(AnalysisState.FAILED)) { + String errMessage = String.format("%s:[%s] ", info.colName, message); + job.message = job.message == null ? errMessage : job.message + errMessage; + } // Set the job state to RUNNING when its first task becomes RUNNING. if (info.state.equals(AnalysisState.RUNNING) && job.state.equals(AnalysisState.PENDING)) { job.state = AnalysisState.RUNNING;