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