diff --git a/doc/sql/snail_job_mysql.sql b/doc/sql/snail_job_mysql.sql index aab93bad..e943b964 100644 --- a/doc/sql/snail_job_mysql.sql +++ b/doc/sql/snail_job_mysql.sql @@ -73,7 +73,7 @@ CREATE TABLE `sj_notify_recipient` `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', `recipient_name` varchar(64) NOT NULL COMMENT '接收人名称', - `notify_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '通知类型 1、钉钉 2、邮件 3、企业微信 4 飞书', + `notify_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '通知类型 1、钉钉 2、邮件 3、企业微信 4 飞书 5 webhook', `notify_attribute` varchar(512) NOT NULL COMMENT '配置属性', `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', diff --git a/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/OfflineNodeSchedule.java b/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/OfflineNodeSchedule.java index 48e24bea..c6d780ff 100644 --- a/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/OfflineNodeSchedule.java +++ b/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/OfflineNodeSchedule.java @@ -18,6 +18,7 @@ import org.springframework.util.CollectionUtils; import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -42,8 +43,13 @@ public class OfflineNodeSchedule extends AbstractSchedule implements Lifecycle { LocalDateTime endTime = LocalDateTime.now().minusSeconds( ServerRegister.DELAY_TIME + (ServerRegister.DELAY_TIME / 3)); - // 先删除DB中需要下线的机器 - serverNodeMapper.delete(new LambdaQueryWrapper().le(ServerNode::getExpireAt, endTime)); + List serverNodes = serverNodeMapper.selectList( + new LambdaQueryWrapper().select(ServerNode::getId) + .le(ServerNode::getExpireAt, endTime)); + if (!CollectionUtils.isEmpty(serverNodes)) { + // 先删除DB中需要下线的机器 + serverNodeMapper.deleteBatchIds(serverNodes.stream().map(ServerNode::getId).collect(Collectors.toSet())); + } Set allPods = CacheRegisterTable.getAllPods(); Set waitOffline = allPods.stream().filter(registerNodeInfo -> registerNodeInfo.getExpireAt().isBefore(endTime)).collect(