feat(1.4.0-beta1): 1. 修复重试任务批量删除失败问题
This commit is contained in:
		
							parent
							
								
									abe08bed5c
								
							
						
					
					
						commit
						c32d1c5426
					
				| @ -41,7 +41,7 @@ public class RetryController { | |||||||
|     @LoginRequired |     @LoginRequired | ||||||
|     @PutMapping("status") |     @PutMapping("status") | ||||||
|     public int updateRetryTaskStatus(@RequestBody RetryUpdateStatusRequestVO retryUpdateStatusRequestVO) { |     public int updateRetryTaskStatus(@RequestBody RetryUpdateStatusRequestVO retryUpdateStatusRequestVO) { | ||||||
|         return retryService.updateRetryTaskStatus(retryUpdateStatusRequestVO); |         return retryService.updateRetryStatus(retryUpdateStatusRequestVO); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @LoginRequired |     @LoginRequired | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| package com.aizuda.snailjob.server.web.model.request; | package com.aizuda.snailjob.server.web.model.request; | ||||||
| 
 | 
 | ||||||
| import com.aizuda.snailjob.common.core.enums.RetryStatusEnum; | import com.aizuda.snailjob.common.core.enums.RetryStatusEnum; | ||||||
|  | import jakarta.validation.constraints.NotBlank; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.hibernate.validator.constraints.NotBlank; |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 重试数据模型 |  * 重试数据模型 | ||||||
|  | |||||||
| @ -30,7 +30,7 @@ public interface RetryService { | |||||||
|      * @param retryUpdateStatusRequestVO 更新重试任务状态请求模型 |      * @param retryUpdateStatusRequestVO 更新重试任务状态请求模型 | ||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     int updateRetryTaskStatus(RetryUpdateStatusRequestVO retryUpdateStatusRequestVO); |     int updateRetryStatus(RetryUpdateStatusRequestVO retryUpdateStatusRequestVO); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 手动新增重试任务 |      * 手动新增重试任务 | ||||||
|  | |||||||
| @ -54,8 +54,10 @@ import com.google.common.collect.Lists; | |||||||
| import com.google.common.collect.Maps; | import com.google.common.collect.Maps; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.context.annotation.Lazy; | import org.springframework.context.annotation.Lazy; | ||||||
|  | import org.springframework.dao.DuplicateKeyException; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  | import org.springframework.transaction.support.TransactionTemplate; | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.*; | import java.util.*; | ||||||
| @ -83,6 +85,8 @@ public class RetryServiceImpl implements RetryService { | |||||||
|     private List<TaskGenerator> taskGenerators; |     private List<TaskGenerator> taskGenerators; | ||||||
|     @Autowired |     @Autowired | ||||||
|     private RetryTaskLogMessageMapper retryTaskLogMessageMapper; |     private RetryTaskLogMessageMapper retryTaskLogMessageMapper; | ||||||
|  |     @Autowired | ||||||
|  |     private TransactionTemplate transactionTemplate; | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public PageResult<List<RetryResponseVO>> getRetryPage(RetryQueryVO queryVO) { |     public PageResult<List<RetryResponseVO>> getRetryPage(RetryQueryVO queryVO) { | ||||||
| @ -141,7 +145,7 @@ public class RetryServiceImpl implements RetryService { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     @Transactional |     @Transactional | ||||||
|     public int updateRetryTaskStatus(RetryUpdateStatusRequestVO requestVO) { |     public int updateRetryStatus(RetryUpdateStatusRequestVO requestVO) { | ||||||
| 
 | 
 | ||||||
|         RetryStatusEnum retryStatusEnum = RetryStatusEnum.getByStatus(requestVO.getRetryStatus()); |         RetryStatusEnum retryStatusEnum = RetryStatusEnum.getByStatus(requestVO.getRetryStatus()); | ||||||
|         if (Objects.isNull(retryStatusEnum)) { |         if (Objects.isNull(retryStatusEnum)) { | ||||||
| @ -178,13 +182,6 @@ public class RetryServiceImpl implements RetryService { | |||||||
|             retryLogMetaDTO.setTimestamp(DateUtils.toNowMilli()); |             retryLogMetaDTO.setTimestamp(DateUtils.toNowMilli()); | ||||||
|             SnailJobLog.REMOTE.info("=============手动操作完成============. <|>{}<|>", retryLogMetaDTO); |             SnailJobLog.REMOTE.info("=============手动操作完成============. <|>{}<|>", retryLogMetaDTO); | ||||||
|         } |         } | ||||||
| // |  | ||||||
| //        RetryTask retryTask = new RetryTask(); |  | ||||||
| //        retryTask.setTaskStatus(requestVO.getRetryStatus()); |  | ||||||
| //        retryTaskMapper.update(retryTask, new LambdaUpdateWrapper<RetryTask>() |  | ||||||
| //                .eq(RetryTask::getNamespaceId, namespaceId) |  | ||||||
| //                .eq(RetryTask::getUniqueId, retry.getUniqueId()) |  | ||||||
| //                .eq(RetryTask::getGroupName, retry.getGroupName())); |  | ||||||
| 
 | 
 | ||||||
|         retry.setUpdateDt(LocalDateTime.now()); |         retry.setUpdateDt(LocalDateTime.now()); | ||||||
|         return retryTaskAccess.updateById(retry); |         return retryTaskAccess.updateById(retry); | ||||||
| @ -351,6 +348,7 @@ public class RetryServiceImpl implements RetryService { | |||||||
| 
 | 
 | ||||||
|         String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); |         String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); | ||||||
| 
 | 
 | ||||||
|  |         transactionTemplate.execute((status -> { | ||||||
|             map.forEach(((sceneName, retryTaskDTOS) -> { |             map.forEach(((sceneName, retryTaskDTOS) -> { | ||||||
|                 TaskContext taskContext = new TaskContext(); |                 TaskContext taskContext = new TaskContext(); | ||||||
|                 taskContext.setSceneName(sceneName); |                 taskContext.setSceneName(sceneName); | ||||||
| @ -360,7 +358,15 @@ public class RetryServiceImpl implements RetryService { | |||||||
|                 taskContext.setTaskInfos(TaskContextConverter.INSTANCE.convert(retryTaskDTOS)); |                 taskContext.setTaskInfos(TaskContextConverter.INSTANCE.convert(retryTaskDTOS)); | ||||||
| 
 | 
 | ||||||
|                 // 生成任务 |                 // 生成任务 | ||||||
|  |                 try { | ||||||
|                     taskGenerator.taskGenerator(taskContext); |                     taskGenerator.taskGenerator(taskContext); | ||||||
|  |                 } catch (DuplicateKeyException e) { | ||||||
|  |                     throw new SnailJobServerException("namespaceId:[{}] groupName:[{}] sceneName:[{}] 任务已经存在", | ||||||
|  |                             namespaceId, parseLogsVO.getGroupName(), sceneName); | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |             })); | ||||||
|  |             return Boolean.TRUE; | ||||||
|         })); |         })); | ||||||
| 
 | 
 | ||||||
|         return waitInsertList.size(); |         return waitInsertList.size(); | ||||||
|  | |||||||
| @ -197,7 +197,7 @@ public class RetryTaskServiceImpl implements RetryTaskService { | |||||||
| 
 | 
 | ||||||
|         List<RetryTask> retryTasks = retryTaskMapper.selectList( |         List<RetryTask> retryTasks = retryTaskMapper.selectList( | ||||||
|                 new LambdaQueryWrapper<RetryTask>() |                 new LambdaQueryWrapper<RetryTask>() | ||||||
|                         .in(RetryTask::getTaskStatus, List.of(RetryStatusEnum.FINISH.getStatus(), RetryStatusEnum.MAX_COUNT.getStatus())) |                         .in(RetryTask::getTaskStatus, RetryTaskStatusEnum.TERMINAL_STATUS_SET) | ||||||
|                         .eq(RetryTask::getNamespaceId, namespaceId) |                         .eq(RetryTask::getNamespaceId, namespaceId) | ||||||
|                         .in(RetryTask::getId, ids)); |                         .in(RetryTask::getId, ids)); | ||||||
|         Assert.notEmpty(retryTasks, () -> new SnailJobServerException("数据不存在")); |         Assert.notEmpty(retryTasks, () -> new SnailJobServerException("数据不存在")); | ||||||
| @ -216,8 +216,11 @@ public class RetryTaskServiceImpl implements RetryTaskService { | |||||||
|     @Override |     @Override | ||||||
|     public Boolean stopById(Long id) { |     public Boolean stopById(Long id) { | ||||||
| 
 | 
 | ||||||
|         Retry retry = retryMapper.selectById(id); |         RetryTask retryTask = retryTaskMapper.selectById(id); | ||||||
|         Assert.notNull(retry, () -> new SnailJobServerException("没有可执行的任务")); |         Assert.notNull(retryTask, () -> new SnailJobServerException("没有可执行的任务")); | ||||||
|  | 
 | ||||||
|  |         Retry retry = retryMapper.selectById(retryTask.getRetryId()); | ||||||
|  |         Assert.notNull(retry, () -> new SnailJobServerException("任务不存在")); | ||||||
| 
 | 
 | ||||||
|         TaskStopJobDTO taskStopJobDTO = RetryConverter.INSTANCE.toTaskStopJobDTO(retry); |         TaskStopJobDTO taskStopJobDTO = RetryConverter.INSTANCE.toTaskStopJobDTO(retry); | ||||||
|         taskStopJobDTO.setOperationReason(RetryOperationReasonEnum.MANNER_STOP.getReason()); |         taskStopJobDTO.setOperationReason(RetryOperationReasonEnum.MANNER_STOP.getReason()); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 opensnail
						opensnail