OCT
REM: 1. 增加REST-ful接口请求超时检查 2. 修正启动处置任务时,未能判断当前相同用户,设备,处置IP的任务是否在运行的问题 3. 系统启动时,根据配置文件配置REST-ful接口请求超时检查开关 4. 修正停止处置任务失败时,恢复任务状态不正确问题
This commit is contained in:
parent
05701262b1
commit
7ac90a3c35
|
@ -54,10 +54,6 @@ public class ConstValue {
|
||||||
* The type Protocol.
|
* The type Protocol.
|
||||||
*/
|
*/
|
||||||
public static class Protocol {
|
public static class Protocol {
|
||||||
/**
|
|
||||||
* The constant RESP_CMD_BASE.
|
|
||||||
*/
|
|
||||||
public static final int RESP_CMD_BASE = 10000;
|
|
||||||
/**
|
/**
|
||||||
* The constant VERSION.
|
* The constant VERSION.
|
||||||
*/
|
*/
|
||||||
|
@ -74,6 +70,8 @@ public class ConstValue {
|
||||||
* The constant CRYPTO_AES256.
|
* The constant CRYPTO_AES256.
|
||||||
*/
|
*/
|
||||||
public static final int CRYPTO_AES256 = 2;
|
public static final int CRYPTO_AES256 = 2;
|
||||||
|
|
||||||
|
public static final int REQUEST_TIMEOUT_MS = 10 * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -130,7 +130,15 @@ public enum ErrorCode {
|
||||||
*/
|
*/
|
||||||
ERR_NOSUCHTASK(30, "没有该任务"),
|
ERR_NOSUCHTASK(30, "没有该任务"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Err tasknotrunning error code.
|
||||||
|
*/
|
||||||
ERR_TASKNOTRUNNING(31, "该任务没有运行"),
|
ERR_TASKNOTRUNNING(31, "该任务没有运行"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Err requesttimeout error code.
|
||||||
|
*/
|
||||||
|
ERR_REQUESTTIMEOUT(32, "请求超时"),
|
||||||
;
|
;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -25,4 +25,9 @@ public class GlobalVar {
|
||||||
* The constant USED_VIRTUAL_DISPOSE_MODE.
|
* The constant USED_VIRTUAL_DISPOSE_MODE.
|
||||||
*/
|
*/
|
||||||
public static volatile boolean USED_VIRTUAL_DISPOSE_MODE = false;
|
public static volatile boolean USED_VIRTUAL_DISPOSE_MODE = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The constant IS_CHECK_REQUEST_TIMEOUT.
|
||||||
|
*/
|
||||||
|
public static volatile boolean IS_CHECK_REQUEST_TIMEOUT = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.dispose.config;
|
package com.dispose.config;
|
||||||
|
|
||||||
|
import com.dispose.common.GlobalVar;
|
||||||
import com.dispose.service.DisposeNodeManager;
|
import com.dispose.service.DisposeNodeManager;
|
||||||
import com.dispose.service.TaskService;
|
import com.dispose.service.TaskService;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
@ -13,6 +14,12 @@ import org.springframework.stereotype.Component;
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SetupInit implements CommandLineRunner {
|
public class SetupInit implements CommandLineRunner {
|
||||||
|
/**
|
||||||
|
* The Dispose configure.
|
||||||
|
*/
|
||||||
|
@Resource
|
||||||
|
private DisposeConfigure disposeConfigure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Dispose node manager.
|
* The Dispose node manager.
|
||||||
*/
|
*/
|
||||||
|
@ -33,6 +40,7 @@ public class SetupInit implements CommandLineRunner {
|
||||||
@Override
|
@Override
|
||||||
public void run(String... args) {
|
public void run(String... args) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
GlobalVar.IS_CHECK_REQUEST_TIMEOUT = Boolean.parseBoolean(disposeConfigure.getCheckProtocolTimeout());
|
||||||
log.info("System Setup................................................");
|
log.info("System Setup................................................");
|
||||||
disposeNodeManager.loadDisposeNodeFromDB();
|
disposeNodeManager.loadDisposeNodeFromDB();
|
||||||
taskService.loadTaskFromDatabase();
|
taskService.loadTaskFromDatabase();
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class DisposeTaskController {
|
||||||
StartTaskRsp rspInfo = new StartTaskRsp();
|
StartTaskRsp rspInfo = new StartTaskRsp();
|
||||||
|
|
||||||
TaskInfoDetail task = TaskInfoDetail.builder()
|
TaskInfoDetail task = TaskInfoDetail.builder()
|
||||||
.id(Long.valueOf(reqInfo.getId()))
|
.deviceId(Long.valueOf(reqInfo.getId()))
|
||||||
.accountId(userAccountService.getUserByToken(mr.getAuthToken()).getId())
|
.accountId(userAccountService.getUserByToken(mr.getAuthToken()).getId())
|
||||||
.type(reqInfo.getType())
|
.type(reqInfo.getType())
|
||||||
.disposeIp(reqInfo.getDisposeIp())
|
.disposeIp(reqInfo.getDisposeIp())
|
||||||
|
|
|
@ -2,15 +2,17 @@ package com.dispose.pojo.dto;
|
||||||
|
|
||||||
import com.dispose.common.ConstValue;
|
import com.dispose.common.ConstValue;
|
||||||
import com.dispose.common.ErrorCode;
|
import com.dispose.common.ErrorCode;
|
||||||
|
import com.dispose.common.GlobalVar;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import java.util.Objects;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type Protocol req dto.
|
* The type Protocol req dto.
|
||||||
*/
|
*/
|
||||||
|
@ -59,6 +61,12 @@ public class ProtocolReqDTO extends ProtocolDTO {
|
||||||
*/
|
*/
|
||||||
public ErrorCode verifyRequest(HttpHeaders headers) {
|
public ErrorCode verifyRequest(HttpHeaders headers) {
|
||||||
|
|
||||||
|
ErrorCode err = verifyRequest();
|
||||||
|
|
||||||
|
if (err != ErrorCode.ERR_OK) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
if (headers == null) {
|
if (headers == null) {
|
||||||
return ErrorCode.ERR_MISSAUTHHEAD;
|
return ErrorCode.ERR_MISSAUTHHEAD;
|
||||||
}
|
}
|
||||||
|
@ -93,6 +101,11 @@ public class ProtocolReqDTO extends ProtocolDTO {
|
||||||
return ErrorCode.ERR_VERSION;
|
return ErrorCode.ERR_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GlobalVar.IS_CHECK_REQUEST_TIMEOUT
|
||||||
|
&& System.currentTimeMillis() - this.getTimeStamp() >= ConstValue.Protocol.REQUEST_TIMEOUT_MS) {
|
||||||
|
return ErrorCode.ERR_REQUESTTIMEOUT;
|
||||||
|
}
|
||||||
|
|
||||||
return ErrorCode.ERR_OK;
|
return ErrorCode.ERR_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,12 +131,13 @@ public class TaskServiceImpl implements TaskService {
|
||||||
@Override
|
@Override
|
||||||
public MReturnType<ErrorCode, Long> createTask(TaskInfoDetail task) {
|
public MReturnType<ErrorCode, Long> createTask(TaskInfoDetail task) {
|
||||||
DisposeDevice disposeDevice;
|
DisposeDevice disposeDevice;
|
||||||
|
Long taskId = task.getDeviceId();
|
||||||
|
|
||||||
// 首先查找有没有能处置这个ip的能力节点
|
// 首先查找有没有能处置这个ip的能力节点
|
||||||
if (task.getId() == null || task.getId() < 0) { // 没有指定处置能力节点的情况
|
if (taskId == null || taskId < 0) { // 没有指定处置能力节点的情况
|
||||||
disposeDevice = getDisposeNode(task.getDisposeIp(), task.getType());
|
disposeDevice = getDisposeNode(task.getDisposeIp(), task.getType());
|
||||||
} else { // 指定了处置能力节点的情况
|
} else { // 指定了处置能力节点的情况
|
||||||
disposeDevice = disposeNodeManager.getDisposeDeviceById(task.getId());
|
disposeDevice = disposeNodeManager.getDisposeDeviceById(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (disposeDevice == null) {
|
if (disposeDevice == null) {
|
||||||
|
@ -146,14 +147,14 @@ public class TaskServiceImpl implements TaskService {
|
||||||
.build();
|
.build();
|
||||||
} else {
|
} else {
|
||||||
task.setDeviceId(disposeDevice.getId());
|
task.setDeviceId(disposeDevice.getId());
|
||||||
task.setAccountId(task.getAccountId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询当前是否有相同能力节点,相同用户,相同处置IP的且正在执行的处置任务,如果存在则忽略该次任务(依照产品需求)
|
// 查询当前是否有相同能力节点,相同用户,相同处置IP的且正在执行的处置任务,如果存在则忽略该次任务(依照产品需求)
|
||||||
List<TaskInfoDetail> taskList = taskCacheManager.getAllTask()
|
List<TaskInfoDetail> taskList = taskCacheManager.getAllTask()
|
||||||
.parallelStream()
|
.parallelStream()
|
||||||
.filter(v -> ((v.getId() == null || v.getId() == -1L) || Objects.equals(v.getId(), task.getDeviceId()))
|
.filter(v -> ((taskId == null || taskId == -1L) || Objects.equals(v.getDeviceId(), task.getDeviceId()))
|
||||||
&& Objects.equals(v.getAccountId(), task.getAccountId())
|
&& Objects.equals(v.getAccountId(), task.getAccountId())
|
||||||
|
&& taskIsRunning(v)
|
||||||
&& Objects.equals(v.getType(), task.getType())
|
&& Objects.equals(v.getType(), task.getType())
|
||||||
&& Objects.equals(v.getDisposeIp(), task.getDisposeIp()))
|
&& Objects.equals(v.getDisposeIp(), task.getDisposeIp()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
@ -241,12 +242,6 @@ public class TaskServiceImpl implements TaskService {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode stopTask(Long taskId) {
|
public ErrorCode stopTask(Long taskId) {
|
||||||
|
|
||||||
ErrorCode err = taskCacheManager.upgradeTaskStatus(taskId, DisposeTaskStatus.TASK_STOP.getCode());
|
|
||||||
|
|
||||||
if (err != ErrorCode.ERR_OK) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
TaskInfoDetail task = taskCacheManager.getTaskById(taskId);
|
TaskInfoDetail task = taskCacheManager.getTaskById(taskId);
|
||||||
|
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
|
@ -258,6 +253,12 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
int prdStatus = task.getCurrentStatus();
|
int prdStatus = task.getCurrentStatus();
|
||||||
|
|
||||||
|
ErrorCode err = taskCacheManager.upgradeTaskStatus(taskId, DisposeTaskStatus.TASK_STOP.getCode());
|
||||||
|
|
||||||
|
if (err != ErrorCode.ERR_OK) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
// 异步启动处置任务
|
// 异步启动处置任务
|
||||||
CompletableFuture.supplyAsync(() -> dp.stopDispose(task.getDisposeIp(), DeviceCapacity.values()[task.getType()]))
|
CompletableFuture.supplyAsync(() -> dp.stopDispose(task.getDisposeIp(), DeviceCapacity.values()[task.getType()]))
|
||||||
.whenComplete((v, ex) -> {
|
.whenComplete((v, ex) -> {
|
||||||
|
@ -276,6 +277,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
return ErrorCode.ERR_NOSUCHTASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ErrorCode.ERR_OK;
|
return ErrorCode.ERR_OK;
|
||||||
|
|
|
@ -4,8 +4,6 @@ import com.dispose.common.ErrorCode;
|
||||||
import com.dispose.common.GlobalVar;
|
import com.dispose.common.GlobalVar;
|
||||||
import com.dispose.pojo.po.MReturnType;
|
import com.dispose.pojo.po.MReturnType;
|
||||||
import com.dispose.service.UserAccountService;
|
import com.dispose.service.UserAccountService;
|
||||||
import java.util.Iterator;
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
@ -15,6 +13,9 @@ import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.springframework.test.context.ActiveProfiles;
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type Init test environment.
|
* The type Init test environment.
|
||||||
*/
|
*/
|
||||||
|
@ -50,6 +51,8 @@ public class InitTestEnvironment {
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void initVirtualDevice() {
|
public static void initVirtualDevice() {
|
||||||
GlobalVar.USED_VIRTUAL_DISPOSE_MODE = true;
|
GlobalVar.USED_VIRTUAL_DISPOSE_MODE = true;
|
||||||
|
GlobalVar.IS_CHECK_REQUEST_TIMEOUT = true;
|
||||||
|
|
||||||
log.warn("Current Used Virtual Dispose Device");
|
log.warn("Current Used Virtual Dispose Device");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,6 @@ public class TaskServiceTest extends InitTestEnvironment {
|
||||||
public void t1_stopTaskTest() {
|
public void t1_stopTaskTest() {
|
||||||
ErrorCode err = taskService.stopTask(-1L);
|
ErrorCode err = taskService.stopTask(-1L);
|
||||||
|
|
||||||
Assert.assertEquals(err, ErrorCode.ERR_NOSUCHDEVICE);
|
Assert.assertNotEquals(err, ErrorCode.ERR_OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue