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) {