From 87306858a1f6fbc00c12e183377a4890e0f7359c Mon Sep 17 00:00:00 2001 From: Calvin Kirs Date: Sat, 20 Jul 2024 10:52:21 +0800 Subject: [PATCH] [Fix](JobManager)Release the lock immediately after modifying job metadata to avoid holding the lock for an extended period.#38162 (#38163) ## Proposed changes #38162 --- .../java/org/apache/doris/job/manager/JobManager.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/manager/JobManager.java b/fe/fe-core/src/main/java/org/apache/doris/job/manager/JobManager.java index d8a30a968a..39646bab18 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/manager/JobManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/manager/JobManager.java @@ -111,12 +111,19 @@ public class JobManager, C> implements Writable { throw new JobException("job id exist, jobId:" + job.getJobId()); } jobMap.put(job.getJobId(), job); - //check its need to scheduler - jobScheduler.scheduleOneJob(job); job.logCreateOperation(); } finally { writeUnlock(); } + try { + //check its need to scheduler + jobScheduler.scheduleOneJob(job); + } catch (Exception e) { + // if scheduler job error, we need to unregister job + log.warn(("first schedule job error,unregister job, jobName:" + job.getJobName()), e); + unregisterJob(job.getJobId()); + throw new JobException("register job error, jobName:" + job.getJobName()); + } } private void checkJobNameExist(String jobName) throws JobException {