fix(sj_1.1.0-beta3): 1. 修复删除后,看板页面显示空的问题 2. 修复定时归档了已经删除的任务问题 3. 修复删除组未删除号段模式序号ID分配表
This commit is contained in:
parent
689e7b2819
commit
2cd0d0ca8b
@ -29,7 +29,8 @@
|
||||
SUM(CASE WHEN (task_batch_status = 6) THEN 1 ELSE 0 END) AS cancelNum,
|
||||
SUM(CASE WHEN (task_batch_status = 5) THEN 1 ELSE 0 END) AS stopNum,
|
||||
SUM(CASE WHEN (task_batch_status = 4) THEN 1 ELSE 0 END) AS failNum
|
||||
FROM sj_job_task_batch
|
||||
FROM sj_job_task_batch batch
|
||||
JOIN (select id as jobId from sj_job) job ON batch.job_id = job.jobId
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
@ -45,7 +46,8 @@
|
||||
SUM(CASE WHEN (task_batch_status = 6) THEN 1 ELSE 0 END) AS cancelNum,
|
||||
SUM(CASE WHEN (task_batch_status = 5) THEN 1 ELSE 0 END) AS stopNum,
|
||||
SUM(CASE WHEN (task_batch_status = 4) THEN 1 ELSE 0 END) AS failNum
|
||||
FROM sj_workflow_task_batch
|
||||
FROM sj_workflow_task_batch batch
|
||||
JOIN (select id as flowId from sj_workflow) flow ON batch.workflow_id = flow.flowId
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
|
@ -25,7 +25,10 @@
|
||||
SUM(CASE WHEN (retry_status = 1) THEN 1 ELSE 0 END) AS finishNum,
|
||||
SUM(CASE WHEN (retry_status = 2) THEN 1 ELSE 0 END) AS maxCountNum,
|
||||
SUM(CASE WHEN (retry_status = 3) THEN 1 ELSE 0 END) AS suspendNum
|
||||
FROM sj_retry_task_log
|
||||
FROM sj_retry_task_log a
|
||||
join (SELECT namespace_id AS namespaceId, group_name AS groupName, scene_name AS sceneName
|
||||
FROM sj_retry_scene_config) b
|
||||
on a.namespace_id = b.namespaceId and a.group_name = b.groupName and a.scene_name = b.sceneName
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
|
@ -12,12 +12,15 @@ import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
||||
import com.aizuda.snailjob.server.common.schedule.AbstractSchedule;
|
||||
import com.aizuda.snailjob.server.common.triple.Pair;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.dataobject.JobBatchSummaryResponseDO;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskBatchMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobSummary;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -40,15 +43,12 @@ import java.util.stream.Collectors;
|
||||
* @since 2.5.0
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class JobSummarySchedule extends AbstractSchedule implements Lifecycle {
|
||||
|
||||
@Autowired
|
||||
private JobTaskBatchMapper jobTaskBatchMapper;
|
||||
@Autowired
|
||||
private JobSummaryMapper jobSummaryMapper;
|
||||
@Autowired
|
||||
private SystemProperties systemProperties;
|
||||
private final JobTaskBatchMapper jobTaskBatchMapper;
|
||||
private final JobSummaryMapper jobSummaryMapper;
|
||||
private final JobMapper jobMapper;
|
||||
private final SystemProperties systemProperties;
|
||||
|
||||
@Override
|
||||
public String lockName() {
|
||||
@ -79,7 +79,7 @@ public class JobSummarySchedule extends AbstractSchedule implements Lifecycle {
|
||||
.groupBy(JobTaskBatch::getNamespaceId, JobTaskBatch::getGroupName,
|
||||
JobTaskBatch::getJobId, JobTaskBatch::getTaskBatchStatus, JobTaskBatch::getOperationReason);
|
||||
List<JobBatchSummaryResponseDO> summaryResponseDOList = jobTaskBatchMapper.selectJobBatchSummaryList(wrapper);
|
||||
if (summaryResponseDOList == null || summaryResponseDOList.size() < 1) {
|
||||
if (CollUtil.isEmpty(summaryResponseDOList)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -113,6 +113,9 @@ public abstract class AbstractScanGroup extends AbstractActor {
|
||||
}
|
||||
|
||||
private void processRetryPartitionTasks(List<? extends PartitionTask> partitionTasks, final ScanTask scanTask) {
|
||||
if (CollUtil.isEmpty(partitionTasks)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 批次查询场景
|
||||
Map<String, RetrySceneConfig> sceneConfigMap = getSceneConfigMap(partitionTasks, scanTask);
|
||||
|
@ -15,8 +15,7 @@ import com.aizuda.snailjob.template.datasource.persistence.po.RetryTaskLog;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Duration;
|
||||
@ -33,15 +32,11 @@ import java.util.*;
|
||||
* @since 2.1.0
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class RetrySummarySchedule extends AbstractSchedule implements Lifecycle {
|
||||
|
||||
@Autowired
|
||||
private RetryTaskLogMapper retryTaskLogMapper;
|
||||
@Autowired
|
||||
private RetrySummaryMapper retrySummaryMapper;
|
||||
@Autowired
|
||||
private SystemProperties systemProperties;
|
||||
private final RetryTaskLogMapper retryTaskLogMapper;
|
||||
private final RetrySummaryMapper retrySummaryMapper;
|
||||
private final SystemProperties systemProperties;
|
||||
|
||||
@Override
|
||||
public String lockName() {
|
||||
|
@ -483,6 +483,11 @@ public class GroupConfigServiceImpl implements GroupConfigService {
|
||||
.eq(GroupConfig::getGroupName, groupName)),
|
||||
() -> new SnailJobServerException("删除组失败, 请检查状态是否关闭状态"));
|
||||
|
||||
Assert.isTrue(1 == sequenceAllocMapper.delete(new LambdaQueryWrapper<SequenceAlloc>()
|
||||
.eq(SequenceAlloc::getNamespaceId, namespaceId)
|
||||
.eq(SequenceAlloc::getGroupName, groupName)),
|
||||
() -> new SnailJobServerException("删除分布式Id表数据失败"));
|
||||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import com.aizuda.snailjob.server.common.WaitStrategy;
|
||||
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
||||
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
||||
import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum;
|
||||
import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
||||
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||
import com.aizuda.snailjob.server.common.strategy.WaitStrategies;
|
||||
import com.aizuda.snailjob.server.common.util.CronUtils;
|
||||
@ -31,9 +32,10 @@ import com.aizuda.snailjob.server.web.service.handler.GroupHandler;
|
||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobSummary;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -63,6 +65,7 @@ public class JobServiceImpl implements JobService {
|
||||
private final JobPrepareHandler terminalJobPrepareHandler;
|
||||
private final AccessTemplate accessTemplate;
|
||||
private final GroupHandler groupHandler;
|
||||
private final JobSummaryMapper jobSummaryMapper;
|
||||
|
||||
private static Long calculateNextTriggerAt(final JobRequestVO jobRequestVO, Long time) {
|
||||
if (Objects.equals(jobRequestVO.getTriggerType(), SystemConstants.WORKFLOW_TRIGGER_TYPE)) {
|
||||
@ -287,6 +290,7 @@ public class JobServiceImpl implements JobService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean deleteJobByIds(Set<Long> ids) {
|
||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||
|
||||
@ -297,6 +301,16 @@ public class JobServiceImpl implements JobService {
|
||||
.in(Job::getId, ids)
|
||||
), () -> new SnailJobServerException("删除定时任务失败, 请检查任务状态是否关闭状态"));
|
||||
|
||||
List<JobSummary> jobSummaries = jobSummaryMapper.selectList(new LambdaQueryWrapper<JobSummary>()
|
||||
.select(JobSummary::getId)
|
||||
.in(JobSummary::getBusinessId, ids)
|
||||
.eq(JobSummary::getNamespaceId, namespaceId)
|
||||
.eq(JobSummary::getSystemTaskType, SyetemTaskTypeEnum.JOB.getType())
|
||||
);
|
||||
if (CollUtil.isNotEmpty(jobSummaries)) {
|
||||
jobSummaryMapper.deleteByIds(StreamUtils.toSet(jobSummaries, JobSummary::getId));
|
||||
}
|
||||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,9 @@ import com.aizuda.snailjob.server.web.service.handler.SyncConfigHandler;
|
||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
||||
import com.aizuda.snailjob.template.datasource.access.ConfigAccess;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.RetrySummaryMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySummary;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
@ -53,6 +55,7 @@ public class SceneConfigServiceImpl implements SceneConfigService {
|
||||
|
||||
private final AccessTemplate accessTemplate;
|
||||
private final GroupHandler groupHandler;
|
||||
private final RetrySummaryMapper retrySummaryMapper;
|
||||
|
||||
private static void checkExecuteInterval(SceneConfigRequestVO requestVO) {
|
||||
if (Lists.newArrayList(WaitStrategies.WaitStrategyEnum.FIXED.getType(),
|
||||
@ -220,15 +223,35 @@ public class SceneConfigServiceImpl implements SceneConfigService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public boolean deleteByIds(Set<Long> ids) {
|
||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||
|
||||
Assert.isTrue(ids.size() == accessTemplate.getSceneConfigAccess().delete(
|
||||
new LambdaQueryWrapper<RetrySceneConfig>()
|
||||
LambdaQueryWrapper<RetrySceneConfig> queryWrapper = new LambdaQueryWrapper<RetrySceneConfig>()
|
||||
.select(RetrySceneConfig::getSceneName, RetrySceneConfig::getGroupName)
|
||||
.eq(RetrySceneConfig::getNamespaceId, namespaceId)
|
||||
.eq(RetrySceneConfig::getSceneStatus, StatusEnum.NO.getStatus())
|
||||
.in(RetrySceneConfig::getId, ids)
|
||||
), () -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
||||
.in(RetrySceneConfig::getId, ids);
|
||||
|
||||
List<RetrySceneConfig> sceneConfigs = accessTemplate.getSceneConfigAccess().list(queryWrapper);
|
||||
Assert.notEmpty(sceneConfigs, () -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
||||
|
||||
Assert.isTrue(ids.size() == accessTemplate.getSceneConfigAccess().delete(queryWrapper),
|
||||
() -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
||||
|
||||
Set<String> sceneNames = StreamUtils.toSet(sceneConfigs, RetrySceneConfig::getSceneName);
|
||||
Set<String> groupNames = StreamUtils.toSet(sceneConfigs, RetrySceneConfig::getGroupName);
|
||||
List<RetrySummary> retrySummaries = retrySummaryMapper.selectList(
|
||||
new LambdaQueryWrapper<RetrySummary>()
|
||||
.select(RetrySummary::getId)
|
||||
.eq(RetrySummary::getNamespaceId, namespaceId)
|
||||
.in(RetrySummary::getGroupName, groupNames)
|
||||
.in(RetrySummary::getSceneName, sceneNames)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(retrySummaries)) {
|
||||
Assert.isTrue(retrySummaries.size() == retrySummaryMapper.deleteByIds(StreamUtils.toSet(retrySummaries, RetrySummary::getId))
|
||||
, () -> new SnailJobServerException("删除汇总表数据失败"));
|
||||
}
|
||||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
@ -14,11 +14,11 @@ import com.aizuda.snailjob.common.core.util.StreamUtils;
|
||||
import com.aizuda.snailjob.common.log.SnailJobLog;
|
||||
import com.aizuda.snailjob.server.common.WaitStrategy;
|
||||
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
||||
import com.aizuda.snailjob.server.common.dto.DecisionConfig;
|
||||
import com.aizuda.snailjob.server.common.dto.JobTaskConfig;
|
||||
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
||||
import com.aizuda.snailjob.server.common.enums.ExpressionTypeEnum;
|
||||
import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum;
|
||||
import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
||||
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||
import com.aizuda.snailjob.server.common.strategy.WaitStrategies;
|
||||
import com.aizuda.snailjob.server.common.util.CronUtils;
|
||||
@ -41,12 +41,10 @@ import com.aizuda.snailjob.server.web.service.handler.WorkflowHandler;
|
||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowNodeMapper;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.Workflow;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.WorkflowNode;
|
||||
import com.aizuda.snailjob.template.datasource.persistence.po.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -85,6 +83,7 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
private final JobMapper jobMapper;
|
||||
private final AccessTemplate accessTemplate;
|
||||
private final GroupHandler groupHandler;
|
||||
private final JobSummaryMapper jobSummaryMapper;
|
||||
|
||||
private static Long calculateNextTriggerAt(final WorkflowRequestVO workflowRequestVO, Long time) {
|
||||
checkExecuteInterval(workflowRequestVO);
|
||||
@ -350,6 +349,7 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean deleteByIds(Set<Long> ids) {
|
||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||
|
||||
@ -360,6 +360,18 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
.in(Workflow::getId, ids)
|
||||
), () -> new SnailJobServerException("删除工作流任务失败, 请检查任务状态是否关闭状态"));
|
||||
|
||||
List<JobSummary> jobSummaries = jobSummaryMapper.selectList(new LambdaQueryWrapper<JobSummary>()
|
||||
.select(JobSummary::getId)
|
||||
.in(JobSummary::getBusinessId, ids)
|
||||
.eq(JobSummary::getNamespaceId, namespaceId)
|
||||
.eq(JobSummary::getSystemTaskType, SyetemTaskTypeEnum.WORKFLOW.getType())
|
||||
);
|
||||
if (CollUtil.isNotEmpty(jobSummaries)) {
|
||||
Assert.isTrue(jobSummaries.size() ==
|
||||
jobSummaryMapper.deleteByIds(StreamUtils.toSet(jobSummaries, JobSummary::getId)),
|
||||
() -> new SnailJobServerException("汇总表删除失败")
|
||||
);
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user