feat(1.5.0-beta1): 上报重试任务时填充groupId和sceneId

This commit is contained in:
opensnail 2025-04-08 08:01:23 +08:00
parent ed5092ee3f
commit 2b057831d8
3 changed files with 32 additions and 10 deletions

View File

@ -170,15 +170,7 @@ public abstract class AbstractGenerator implements TaskGenerator {
.getSceneConfigByGroupNameAndSceneName(taskContext.getGroupName(), taskContext.getSceneName(), .getSceneConfigByGroupNameAndSceneName(taskContext.getGroupName(), taskContext.getSceneName(),
taskContext.getNamespaceId()); taskContext.getNamespaceId());
if (Objects.isNull(retrySceneConfig)) { if (Objects.isNull(retrySceneConfig)) {
if (taskContext.getInitScene().equals(StatusEnum.NO.getStatus())) {
GroupConfig groupConfig = accessTemplate.getGroupConfigAccess()
.getGroupConfigByGroupName(taskContext.getGroupName(), taskContext.getNamespaceId());
if (Objects.isNull(groupConfig)) {
throw new SnailJobServerException(
"failed to report data, no group configuration found. groupName:[{}]", taskContext.getGroupName());
}
if (groupConfig.getInitScene().equals(StatusEnum.NO.getStatus())) {
throw new SnailJobServerException( throw new SnailJobServerException(
"failed to report data, no scene configuration found. groupName:[{}] sceneName:[{}]", "failed to report data, no scene configuration found. groupName:[{}] sceneName:[{}]",
taskContext.getGroupName(), taskContext.getSceneName()); taskContext.getGroupName(), taskContext.getSceneName());
@ -188,6 +180,7 @@ public abstract class AbstractGenerator implements TaskGenerator {
} }
} }
taskContext.setSceneId(retrySceneConfig.getId());
return retrySceneConfig; return retrySceneConfig;
} }

View File

@ -24,16 +24,31 @@ public class TaskContext {
*/ */
private String groupName; private String groupName;
/**
* groupId
*/
private Long groupId;
/** /**
* sceneName * sceneName
*/ */
private String sceneName; private String sceneName;
/**
* sceneId
*/
private Long sceneId;
/** /**
* 任务的初始状态 * 任务的初始状态
*/ */
private Integer initStatus; private Integer initStatus;
/**
* 是否初始化场景
*/
private Integer initScene;
/** /**
* 任务信息 * 任务信息
*/ */

View File

@ -16,11 +16,14 @@ import com.aizuda.snailjob.server.model.dto.RetryTaskDTO;
import com.aizuda.snailjob.server.retry.task.support.generator.retry.TaskContext; import com.aizuda.snailjob.server.retry.task.support.generator.retry.TaskContext;
import com.aizuda.snailjob.server.retry.task.support.generator.retry.TaskGenerator; import com.aizuda.snailjob.server.retry.task.support.generator.retry.TaskGenerator;
import com.aizuda.snailjob.server.retry.task.service.TaskContextConverter; import com.aizuda.snailjob.server.retry.task.service.TaskContextConverter;
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
import com.github.rholder.retry.*; import com.github.rholder.retry.*;
import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpMethod;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.ConcurrencyFailureException; import org.springframework.dao.ConcurrencyFailureException;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -30,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -47,6 +51,7 @@ import static com.aizuda.snailjob.common.core.constant.SystemConstants.HTTP_PATH
@RequiredArgsConstructor @RequiredArgsConstructor
public class ReportRetryInfoHttpRequestHandler extends PostHttpRequestHandler { public class ReportRetryInfoHttpRequestHandler extends PostHttpRequestHandler {
private final List<TaskGenerator> taskGenerators; private final List<TaskGenerator> taskGenerators;
private final AccessTemplate accessTemplate;
@Override @Override
public boolean supports(String path) { public boolean supports(String path) {
@ -104,13 +109,22 @@ public class ReportRetryInfoHttpRequestHandler extends PostHttpRequestHandler {
.build(); .build();
String namespaceId = headers.getAsString(HeadersEnum.NAMESPACE.getKey()); String namespaceId = headers.getAsString(HeadersEnum.NAMESPACE.getKey());
String groupName = headers.getAsString(HeadersEnum.GROUP_NAME.getKey());
GroupConfig groupConfig = accessTemplate.getGroupConfigAccess()
.getGroupConfigByGroupName(groupName, namespaceId);
if (Objects.isNull(groupConfig)) {
throw new SnailJobServerException(
"failed to report data, no group configuration found. groupName:[{}]", groupName);
}
retryer.call(() -> { retryer.call(() -> {
map.forEach(((sceneName, retryTaskDTOS) -> { map.forEach(((sceneName, retryTaskDTOS) -> {
TaskContext taskContext = new TaskContext(); TaskContext taskContext = new TaskContext();
taskContext.setSceneName(sceneName); taskContext.setSceneName(sceneName);
taskContext.setNamespaceId(namespaceId); taskContext.setNamespaceId(namespaceId);
taskContext.setGroupName(set.stream().findFirst().get()); taskContext.setGroupName(groupName);
taskContext.setInitScene(groupConfig.getInitScene());
taskContext.setTaskInfos(TaskContextConverter.INSTANCE.toTaskContextInfo(retryTaskDTOS)); taskContext.setTaskInfos(TaskContextConverter.INSTANCE.toTaskContextInfo(retryTaskDTOS));
// 生成任务 // 生成任务