feat(sj_1.0.0): 优化剔除下线机器死锁问题
This commit is contained in:
parent
514c6fcd13
commit
1ec5a6e1d1
@ -73,7 +73,7 @@ CREATE TABLE `sj_notify_recipient`
|
|||||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
|
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
|
||||||
`recipient_name` varchar(64) NOT NULL COMMENT '接收人名称',
|
`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 '配置属性',
|
`notify_attribute` varchar(512) NOT NULL COMMENT '配置属性',
|
||||||
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
|
`description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述',
|
||||||
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
@ -18,6 +18,7 @@ import org.springframework.util.CollectionUtils;
|
|||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -42,8 +43,13 @@ public class OfflineNodeSchedule extends AbstractSchedule implements Lifecycle {
|
|||||||
LocalDateTime endTime = LocalDateTime.now().minusSeconds(
|
LocalDateTime endTime = LocalDateTime.now().minusSeconds(
|
||||||
ServerRegister.DELAY_TIME + (ServerRegister.DELAY_TIME / 3));
|
ServerRegister.DELAY_TIME + (ServerRegister.DELAY_TIME / 3));
|
||||||
|
|
||||||
|
List<ServerNode> serverNodes = serverNodeMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<ServerNode>().select(ServerNode::getId)
|
||||||
|
.le(ServerNode::getExpireAt, endTime));
|
||||||
|
if (!CollectionUtils.isEmpty(serverNodes)) {
|
||||||
// 先删除DB中需要下线的机器
|
// 先删除DB中需要下线的机器
|
||||||
serverNodeMapper.delete(new LambdaQueryWrapper<ServerNode>().le(ServerNode::getExpireAt, endTime));
|
serverNodeMapper.deleteBatchIds(serverNodes.stream().map(ServerNode::getId).collect(Collectors.toSet()));
|
||||||
|
}
|
||||||
|
|
||||||
Set<RegisterNodeInfo> allPods = CacheRegisterTable.getAllPods();
|
Set<RegisterNodeInfo> allPods = CacheRegisterTable.getAllPods();
|
||||||
Set<RegisterNodeInfo> waitOffline = allPods.stream().filter(registerNodeInfo -> registerNodeInfo.getExpireAt().isBefore(endTime)).collect(
|
Set<RegisterNodeInfo> waitOffline = allPods.stream().filter(registerNodeInfo -> registerNodeInfo.getExpireAt().isBefore(endTime)).collect(
|
||||||
|
Loading…
Reference in New Issue
Block a user