diff --git a/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java b/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java index 7523e70bab98d556fcb593a5a41fa44bafe6b445..3c3f3e26c1a5a7c4654e43bfc8c4d63e0ef1a709 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 cec37cf6ec320eafb3143faf6905497370b7b735..3554cdb8f7517fbf5fd8676201dff8e955eef0f4 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 4504f408e31222f4f8dcb402b6496761f2577ebd..6e950053719a122b90d5f4f9256529a31fc03539 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 d914e54d2769daf80bff177209400e214a7cbe09..48bdef924b7677acaf1e79049cb301c8230615c7 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) {