From 14cfad74255a91739679fe23670c24b4d3012038 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sun, 27 Apr 2025 19:24:57 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=B8=85=E7=90=86?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BD=9C=E4=B8=9Aschedule=5Fjob=5Flock?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E6=97=A0=E6=95=88=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1408824756371456]清理定时作业schedule_job_lock表的无效数据 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1408824756371456 --- .../framework/scheduler/core/SchedulerManager.java | 4 ++++ .../scheduler/dao/mapper/SchedulerMapper.java | 4 ++-- .../scheduler/dao/mapper/SchedulerMapper.xml | 12 ++++++------ .../handler/SchedulerHeartbreakHandler.java | 3 +++ 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java b/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java index 7523e70ba..3c3f3e26c 100644 --- a/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java +++ b/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java @@ -22,6 +22,7 @@ import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.asynchronization.threadpool.CachedThreadPool; import neatlogic.framework.bootstrap.NeatLogicWebApplicationContext; import neatlogic.framework.common.RootComponent; +import neatlogic.framework.common.config.Config; import neatlogic.framework.common.constvalue.systemuser.SystemUser; import neatlogic.framework.dao.mapper.TenantMapper; import neatlogic.framework.dto.TenantVo; @@ -104,6 +105,7 @@ public class SchedulerManager extends ModuleInitializedListenerBase { public Date loadJob(JobObject jobObject) { // 如果结束时间比当前时间早,就不加载了 if (jobObject.getEndTime() != null && jobObject.getEndTime().before(new Date())) { + unloadJob(jobObject); return null; } try { @@ -180,6 +182,7 @@ public class SchedulerManager extends ModuleInitializedListenerBase { } catch (Exception ex) { logger.error(ex.getMessage(), ex); } + unloadJob(jobObject); return null; } @@ -256,6 +259,7 @@ public class SchedulerManager extends ModuleInitializedListenerBase { try { // 切换租户数据源 TenantContext.get().switchTenant(tenantUuid).setUseMasterDatabase(false); + schedulerMapper.deleteJobLockByServerId(Config.SCHEDULE_SERVER_ID); UserContext.init(SystemUser.SYSTEM); for (IJob jobHandler : jobHandlerList) { jobHandler.initJob(tenantUuid); diff --git a/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.java b/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.java index cec37cf6e..3554cdb8f 100644 --- a/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.java +++ b/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.java @@ -70,8 +70,6 @@ public interface SchedulerMapper { int updateJobLock(JobLockVo jobLock); - int updateJobLockByServerId(JobLockVo jobLock); - // INSERT int insertJob(JobVo job); @@ -100,6 +98,8 @@ public interface SchedulerMapper { int deleteJobLock(@Param("jobName") String jobName, @Param("jobGroup") String jobGroup); + int deleteJobLockByServerId(Integer serverId); + void deleteUnusedJobStatus(); void deleteAuditDetail(); diff --git a/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.xml b/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.xml index 4504f408e..6e9500537 100644 --- a/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.xml +++ b/src/main/java/neatlogic/framework/scheduler/dao/mapper/SchedulerMapper.xml @@ -370,12 +370,6 @@ along with this program. If not, see .--> AND job_group = #{jobGroup} - - UPDATE `schedule_job_lock` - SET `lock`=#{lock} - WHERE `server_id` = #{serverId} - - insert into schedule_job_data (job_uuid, data_name, data_value) @@ -495,6 +489,12 @@ along with this program. If not, see .--> AND `job_group` = #{jobGroup} + + DELETE + FROM `schedule_job_lock` + WHERE `server_id` = #{value} + + diff --git a/src/main/java/neatlogic/module/framework/scheduler/heartbreak/handler/SchedulerHeartbreakHandler.java b/src/main/java/neatlogic/module/framework/scheduler/heartbreak/handler/SchedulerHeartbreakHandler.java index d914e54d2..48bdef924 100755 --- a/src/main/java/neatlogic/module/framework/scheduler/heartbreak/handler/SchedulerHeartbreakHandler.java +++ b/src/main/java/neatlogic/module/framework/scheduler/heartbreak/handler/SchedulerHeartbreakHandler.java @@ -16,6 +16,7 @@ along with this program. If not, see .*/ package neatlogic.module.framework.scheduler.heartbreak.handler; import neatlogic.framework.asynchronization.threadlocal.TenantContext; +import neatlogic.framework.common.config.Config; import neatlogic.framework.dao.mapper.TenantMapper; import neatlogic.framework.dto.TenantVo; import neatlogic.framework.heartbeat.core.IHeartbreakHandler; @@ -55,6 +56,8 @@ public class SchedulerHeartbreakHandler implements IHeartbreakHandler { // 接管异常server的作业 List jobLockList = schedulerMapper.getJobLockByServerId(serverId); for (JobLockVo jobLockVo : jobLockList) { + jobLockVo.setServerId(Config.SCHEDULE_SERVER_ID); + schedulerMapper.updateJobLock(jobLockVo); if (!schedulerManager.checkJobIsExists(jobLockVo.getJobName(), jobLockVo.getJobGroup())) { IJob jobHandler = SchedulerManager.getHandler(jobLockVo.getJobHandler()); if (jobHandler != null) { -- Gitee