feat: 2.6.0

1. 广播相同IP重复执行问题
This commit is contained in:
byteblogs168 2024-01-22 23:04:20 +08:00
parent a1347435d8
commit 538298833d

View File

@ -18,10 +18,9 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.time.LocalDateTime;
import java.util.List; import java.util.*;
import java.util.Optional; import java.util.stream.Collectors;
import java.util.Set;
/** /**
* @author www.byteblogs.com * @author www.byteblogs.com
@ -49,8 +48,15 @@ public class BroadcastTaskGenerator extends AbstractJobTaskGenerator {
return Lists.newArrayList(); return Lists.newArrayList();
} }
Set<String> clientInfoSet = new HashSet<>(serverNodes.size());
List<JobTask> jobTasks = new ArrayList<>(serverNodes.size()); List<JobTask> jobTasks = new ArrayList<>(serverNodes.size());
for (RegisterNodeInfo serverNode : serverNodes) { for (RegisterNodeInfo serverNode : serverNodes) {
// 若存在相同的IP信息则去重
String address = serverNode.address();
if (clientInfoSet.contains(address)) {
continue;
}
JobTask jobTask = JobTaskConverter.INSTANCE.toJobTaskInstance(context); JobTask jobTask = JobTaskConverter.INSTANCE.toJobTaskInstance(context);
jobTask.setClientInfo(ClientInfoUtils.generate(serverNode)); jobTask.setClientInfo(ClientInfoUtils.generate(serverNode));
jobTask.setArgsType(context.getArgsType()); jobTask.setArgsType(context.getArgsType());
@ -58,6 +64,7 @@ public class BroadcastTaskGenerator extends AbstractJobTaskGenerator {
jobTask.setTaskStatus(JobTaskStatusEnum.RUNNING.getStatus()); jobTask.setTaskStatus(JobTaskStatusEnum.RUNNING.getStatus());
jobTask.setResultMessage(Optional.ofNullable(jobTask.getResultMessage()).orElse(StrUtil.EMPTY)); jobTask.setResultMessage(Optional.ofNullable(jobTask.getResultMessage()).orElse(StrUtil.EMPTY));
Assert.isTrue(1 == jobTaskMapper.insert(jobTask), () -> new EasyRetryServerException("新增任务实例失败")); Assert.isTrue(1 == jobTaskMapper.insert(jobTask), () -> new EasyRetryServerException("新增任务实例失败"));
clientInfoSet.add(address);
jobTasks.add(jobTask); jobTasks.add(jobTask);
} }