|
@@ -29,18 +29,22 @@ public class TaskService {
|
|
|
|
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public void taskState(String taskId, String state, String podName) {
|
|
public void taskState(String taskId, String state, String podName) {
|
|
- String lockName = "taskId:" + taskId + ":state:" + state + ":pod-name:" + podName;
|
|
|
|
- customRedisClient.lock(lockName, 1L, 30 * 60L);
|
|
|
|
|
|
+ String lock1 = "taskId:" + taskId + ":state:" + state + ":pod-name:" + podName;
|
|
|
|
+ customRedisClient.lock(lock1, 1L, 30 * 60L);
|
|
try {
|
|
try {
|
|
|
|
+ // 查询相关信息
|
|
TaskEntity taskEntity = taskMapper.selectById(taskId);
|
|
TaskEntity taskEntity = taskMapper.selectById(taskId);
|
|
String projectId = taskEntity.getPId(); // 项目 id
|
|
String projectId = taskEntity.getPId(); // 项目 id
|
|
ProjectEntity projectEntity = projectUtil.getProjectByProjectId(projectId);
|
|
ProjectEntity projectEntity = projectUtil.getProjectByProjectId(projectId);
|
|
String projectType = projectEntity.getProjectType(); // 项目类型
|
|
String projectType = projectEntity.getProjectType(); // 项目类型
|
|
String maxSimulationTime = projectEntity.getMaxSimulationTime(); // 项目类型
|
|
String maxSimulationTime = projectEntity.getMaxSimulationTime(); // 项目类型
|
|
String userId = taskEntity.getCreateUserId(); // 用户 id
|
|
String userId = taskEntity.getCreateUserId(); // 用户 id
|
|
- PrefixEntity redisPrefix = projectUtil.getRedisPrefixByUserIdAndProjectIdAndTaskId(userId, projectId, taskId); // 项目前缀
|
|
|
|
|
|
+ PrefixEntity redisPrefix = projectUtil.getRedisPrefixByUserIdAndProjectIdAndTaskId(userId, projectId, taskId);
|
|
|
|
+ // 判断是否完成
|
|
boolean projectCompleted = taskManager.isProjectCompleted(redisPrefix, projectId, projectType, maxSimulationTime, taskId, state, podName);
|
|
boolean projectCompleted = taskManager.isProjectCompleted(redisPrefix, projectId, projectType, maxSimulationTime, taskId, state, podName);
|
|
if (projectCompleted) {
|
|
if (projectCompleted) {
|
|
|
|
+ String lock2 = "project:" + projectId + ":completed-lock";
|
|
|
|
+ customRedisClient.tryLock(lock2, 10 * 60L);
|
|
log.info("项目 {} 开始打分。", projectId);
|
|
log.info("项目 {} 开始打分。", projectId);
|
|
taskManager.score(redisPrefix.getProjectRunningKey(), userId, projectId, projectType);
|
|
taskManager.score(redisPrefix.getProjectRunningKey(), userId, projectId, projectType);
|
|
log.info("项目 {} 计算评价等级。", projectId);
|
|
log.info("项目 {} 计算评价等级。", projectId);
|
|
@@ -50,7 +54,7 @@ public class TaskService {
|
|
log.info("项目 {} 运行结束。", projectId);
|
|
log.info("项目 {} 运行结束。", projectId);
|
|
}
|
|
}
|
|
} finally {
|
|
} finally {
|
|
- customRedisClient.unlock(lockName);
|
|
|
|
|
|
+ customRedisClient.unlock(lock1);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|