From 52fe384ee1149f9398378d30f008a9dd242e96fc Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Wed, 20 Nov 2024 19:39:47 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E4=BD=9C=E4=B8=9A=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96=20#[1293?= =?UTF-8?q?323044618240]=E8=87=AA=E5=8A=A8=E5=8C=96=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5=E8=8A=82=E7=82=B9=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=20http://192.168.0.96:8090/demo/rdm?= =?UTF-8?q?.html#/story-detail/939050947543040/939050947543042/12933230446?= =?UTF-8?q?18240?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DownloadAutoexecJobPhaseNodesApi.java | 2 +- .../handler/AutoexecJobReFireHandler.java | 7 - .../action/AutoexecJobSourceTypeHandler.java | 14 +- .../service/AutoexecJobServiceImpl.java | 223 +++++++++--------- .../changelog/2024-11-17/neatlogic_tenant.sql | 14 +- 5 files changed, 137 insertions(+), 123 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java b/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java index c68fd413..285bfe9b 100644 --- a/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java +++ b/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java @@ -194,7 +194,7 @@ public class DownloadAutoexecJobPhaseNodesApi extends PrivateBinaryStreamApiComp BigDecimal lastModifiedDec = new BigDecimal(Double.toString(paramObj.getDouble("lastModified"))); lastModifiedLong = lastModifiedDec.multiply(new BigDecimal("1000")).longValue(); } - nodeParamVo.setStatusBlackList(Collections.singletonList(JobNodeStatus.IGNORED.getValue())); + nodeParamVo.setStatusBlackList(Arrays.asList(JobNodeStatus.IGNORED.getValue(),JobNodeStatus.INVALID.getValue())); //获取是不是巡检类型的作业 boolean isInspect = isInspect(jobVo); diff --git a/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java b/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java index 0076a923..7662c84a 100644 --- a/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java @@ -73,14 +73,12 @@ public class AutoexecJobReFireHandler extends AutoexecJobActionHandlerBase { @Override public JSONObject doMyService(AutoexecJobVo jobVo) { - //List needSqlFileResetStatusPhaseNameList = new ArrayList<>(); if (Objects.equals(jobVo.getAction(), JobAction.RESET_REFIRE.getValue())) { new AutoexecJobAuthActionManager.Builder().addReFireJob().build().setAutoexecJobAction(jobVo); jobVo.setStatus(JobStatus.PENDING.getValue()); autoexecJobMapper.updateJobStatus(jobVo); resetAll(jobVo); autoexecJobMapper.updateJobPhaseStatusByJobId(jobVo.getId(), JobPhaseStatus.PENDING.getValue());//重置phase状态为pending - //autoexecJobService.getAutoexecJobDetail(jobVo, 0); //获取group jobVo.setExecuteJobGroupVo(autoexecJobMapper.getJobGroupByJobIdAndSort(jobVo.getId(), 0)); //重刷所有phase node @@ -88,7 +86,6 @@ public class AutoexecJobReFireHandler extends AutoexecJobActionHandlerBase { //更新没有删除的节点为"未开始"状态 autoexecJobMapper.updateJobPhaseNodeStatusByJobIdAndIsDelete(jobVo.getId(), JobNodeStatus.PENDING.getValue(), 0); jobVo.setIsFirstFire(1); - //needSqlFileResetStatusPhaseNameList = autoexecJobMapper.getJobPhaseListByJobId(jobVo.getId()).stream().filter(o -> Objects.equals(o.getExecMode(), ExecMode.SQL.getValue())).map(AutoexecJobPhaseVo::getName).collect(Collectors.toList()); } else if (Objects.equals(jobVo.getAction(), JobAction.REFIRE.getValue())) { /*寻找中止|暂停|失败的phase * 1、寻找pending|aborted|paused|failed phaseList @@ -110,7 +107,6 @@ public class AutoexecJobReFireHandler extends AutoexecJobActionHandlerBase { } jobVo.setStatus(JobStatus.PENDING.getValue()); autoexecJobMapper.updateJobStatus(jobVo); - //needSqlFileResetStatusPhaseNameList = autoexecJobPhaseVos.stream().filter(o -> Objects.equals(o.getExecMode(), ExecMode.SQL.getValue())).map(AutoexecJobPhaseVo::getName).collect(Collectors.toList()); autoexecJobMapper.updateJobPhaseStatusByPhaseIdList(autoexecJobPhaseVos.stream().map(AutoexecJobPhaseVo::getId).collect(Collectors.toList()), JobPhaseStatus.PENDING.getValue()); jobVo.setExecuteJobGroupVo(autoexecJobPhaseVos.get(0).getJobGroupVo()); autoexecJobService.getAutoexecJobDetail(jobVo); @@ -121,9 +117,6 @@ public class AutoexecJobReFireHandler extends AutoexecJobActionHandlerBase { } else { throw new AutoexecJobActionInvalidException(); } - /*if (CollectionUtils.isNotEmpty(needSqlFileResetStatusPhaseNameList)) { - autoexecJobService.resetAutoexecJobSqlStatusByJobIdAndJobPhaseNameList(jobVo.getId(), needSqlFileResetStatusPhaseNameList); - }*/ autoexecJobService.executeGroup(jobVo); return null; } diff --git a/src/main/java/neatlogic/module/autoexec/job/source/action/AutoexecJobSourceTypeHandler.java b/src/main/java/neatlogic/module/autoexec/job/source/action/AutoexecJobSourceTypeHandler.java index a114b971..d0d4d3a4 100644 --- a/src/main/java/neatlogic/module/autoexec/job/source/action/AutoexecJobSourceTypeHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/source/action/AutoexecJobSourceTypeHandler.java @@ -298,13 +298,13 @@ public class AutoexecJobSourceTypeHandler extends AutoexecJobSourceTypeHandlerBa break; } } - if (CollectionUtils.isEmpty(runnerMapVos)) { - if (CollectionUtils.isNotEmpty(runnerGroupIdListWithTag)) { - throw new RunnerNotMatchException(jobPhaseVo.getCurrentNode().getHost(), jobPhaseVo.getCurrentNode().getResourceId(), runnerGroupTagNameStr); - } else { - throw new RunnerNotMatchException(jobPhaseVo.getCurrentNode().getHost(), jobPhaseVo.getCurrentNode().getResourceId()); - } - } +// if (CollectionUtils.isEmpty(runnerMapVos)) { +// if (CollectionUtils.isNotEmpty(runnerGroupIdListWithTag)) { +// throw new RunnerNotMatchException(jobPhaseVo.getCurrentNode().getHost(), jobPhaseVo.getCurrentNode().getResourceId(), runnerGroupTagNameStr); +// } else { +// throw new RunnerNotMatchException(jobPhaseVo.getCurrentNode().getHost(), jobPhaseVo.getCurrentNode().getResourceId()); +// } +// } } else { ParamMappingVo runnerGroupParam = jobVo.getRunnerGroup(); //默认随机分配 diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index cbf64dc5..a8390051 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -55,12 +55,8 @@ import neatlogic.framework.dao.mapper.runner.RunnerMapper; import neatlogic.framework.deploy.crossover.IDeploySqlCrossoverMapper; import neatlogic.framework.dto.RestVo; import neatlogic.framework.dto.runner.RunnerMapVo; -import neatlogic.framework.exception.runner.RunnerConnectRefusedException; -import neatlogic.framework.exception.runner.RunnerHttpRequestException; -import neatlogic.framework.exception.runner.RunnerMapNotMatchRunnerException; -import neatlogic.framework.exception.runner.RunnerNotMatchException; +import neatlogic.framework.exception.runner.*; import neatlogic.framework.integration.authentication.enums.AuthenticateType; -import neatlogic.framework.transaction.util.TransactionUtil; import neatlogic.framework.util.$; import neatlogic.framework.util.HttpRequestUtil; import neatlogic.framework.util.RestUtil; @@ -74,7 +70,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; -import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -184,6 +179,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } } autoexecJobMapper.insertJob(jobVo); + jobVo.setIsFirstInit(1); //保存作业执行目标 AutoexecCombopExecuteConfigVo combopExecuteConfigVo = config.getExecuteConfig(); String userName = StringUtils.EMPTY; @@ -256,10 +252,9 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC Date nowTime = new Date(System.currentTimeMillis()); jobPhaseVo.setLcd(nowTime); AutoexecJobPhaseNodeVo nodeVo = new AutoexecJobPhaseNodeVo(jobVo.getId(), jobPhaseVo, "runner", JobNodeStatus.PENDING.getValue(), userName, protocolId); - autoexecJobMapper.insertJobPhaseNode(nodeVo); nodeVo.setRunnerMapId(runnerMapVo.getRunnerMapId()); + autoexecJobMapper.insertJobPhaseNode(nodeVo); runnerMapper.insertRunnerMap(runnerMapVo); - autoexecJobMapper.insertIgnoreJobPhaseNodeRunner(new AutoexecJobPhaseNodeRunnerVo(nodeVo)); autoexecJobMapper.insertJobPhaseRunner(nodeVo.getJobId(), nodeVo.getJobGroupId(), nodeVo.getJobPhaseId(), nodeVo.getRunnerMapId(), nodeVo.getLcd()); autoexecJobSourceActionHandler.updateJobRunnerMap(jobVo.getId(), runnerMapVo.getRunnerMapId()); } @@ -877,6 +872,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC if (MapUtils.isNotEmpty(executeNodeConfigVo.getFilter())) { long updateNodeResourceByFilter = System.currentTimeMillis(); isHasNode = updateNodeResourceByFilter(executeNodeConfigVo, jobVo, userName, protocolId); + System.out.println((System.currentTimeMillis() - updateNodeResourceByFilter) + " ##updateNodeResourceByFilter:-------------------------------------------------------------------------------"); logger.debug((System.currentTimeMillis() - updateNodeResourceByFilter) + " ##updateNodeResourceByFilter:-------------------------------------------------------------------------------"); } @@ -896,7 +892,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC if (CollectionUtils.isNotEmpty(executeNodeConfigVo.getPreOutputList())) { isHasNode = updateNodeResourceByPrePhaseOutput(jobVo, executeNodeConfigVo, userName, protocolId); } - + long ccc = System.currentTimeMillis(); AutoexecJobPhaseVo jobPhaseVo = jobVo.getCurrentPhase(); //检查当前阶段是否需要更新别的阶段执行目标,如果是则该阶段只能存在一个节点 if (jobPhaseVo.getIsPreOutputUpdateNode() == 1) { @@ -907,15 +903,19 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC throw new AutoexecJobUpdateNodeByPreOutPutListException(jobPhaseVo, combopPhaseVoList); } } - boolean isNeedLncd;//用于判断是否需要更新lncd(用于判断是否需要重新下载节点) - //删除没有跑过的历史节点 runnerMap - autoexecJobMapper.deleteJobPhaseNodeRunnerByJobPhaseIdAndLcdAndStatus(jobPhaseVo.getId(), nowTime, JobNodeStatus.PENDING.getValue()); - //删除没有跑过的历史节点 - Integer deleteCount = autoexecJobMapper.deleteJobPhaseNodeByJobPhaseIdAndLcdAndStatus(jobPhaseVo.getId(), nowTime, JobNodeStatus.PENDING.getValue()); - isNeedLncd = deleteCount > 0; - //更新该阶段所有不是最近更新的节点为已删除,即非法历史节点 - Integer updateCount = autoexecJobMapper.updateJobPhaseNodeIsDeleteByJobPhaseIdAndLcd(jobPhaseVo.getId(), jobPhaseVo.getLcd()); - isNeedLncd = isNeedLncd || updateCount > 0; + boolean isNeedLncd = true;//用于判断是否需要更新lncd(用于判断是否需要重新下载节点) + if (jobVo.getIsFirstInit() == 0) { + //删除没有跑过的历史节点 + long deleteJobPhaseNodeByJobPhaseIdAndLcdAndStatus = System.currentTimeMillis(); + Integer deleteCount = autoexecJobMapper.deleteJobPhaseNodeByJobPhaseIdAndUpdateTagAndStatus(jobPhaseVo.getId(), nowTime.getTime(), JobNodeStatus.PENDING.getValue()); + System.out.println((System.currentTimeMillis() - deleteJobPhaseNodeByJobPhaseIdAndLcdAndStatus) + " ##deleteJobPhaseNodeByJobPhaseIdAndLcdAndStatus:-------------------------------------------------------------------------------"); + isNeedLncd = deleteCount > 0; + //更新该阶段所有不是最近更新的节点为已删除,即非法历史节点 + long cvv = System.currentTimeMillis(); + Integer updateCount = autoexecJobMapper.updateJobPhaseNodeIsDeleteByJobPhaseIdAndUpdateTag(jobPhaseVo.getId(), nowTime.getTime()); + System.out.println((System.currentTimeMillis() - cvv) + " ##cvv:-------------------------------------------------------------------------------"); + isNeedLncd = isNeedLncd || updateCount > 0; + } //阶段节点被真删除||伪删除(is_delete=1),则更新上一次修改日期(plcd),需重新下载 if (isNeedLncd) { if (Objects.equals(AutoexecJobPhaseNodeFrom.JOB.getValue(), jobVo.getNodeFrom())) { @@ -929,7 +929,10 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC //更新最近一次修改时间lcd autoexecJobMapper.updateJobPhaseLcdById(jobPhaseVo.getId(), jobPhaseVo.getLcd()); //更新phase runner + long refreshPhaseRunnerList = System.currentTimeMillis(); refreshPhaseRunnerList(jobPhaseVo); + System.out.println((System.currentTimeMillis() - refreshPhaseRunnerList) + " ##refreshPhaseRunnerList:-------------------------------------------------------------------------------"); + System.out.println((System.currentTimeMillis() - ccc) + " ##ccc:-------------------------------------------------------------------------------"); return isHasNode; } @@ -949,7 +952,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC for (RunnerMapVo deleteRunnerVo : deleteRunnerList) { autoexecJobMapper.deleteJobPhaseRunnerByJobPhaseIdAndRunnerMapId(jobPhaseVo.getId(), deleteRunnerVo.getRunnerMapId()); } - List insertRunnerList = jobPhaseNodeRunnerList.stream().filter(j -> originPhaseRunnerVoList.stream().noneMatch(o -> Objects.equals(o.getRunnerMapId(), j.getRunnerMapId()))).collect(Collectors.toList()); + List insertRunnerList = jobPhaseNodeRunnerList.stream().filter(j -> j != null && originPhaseRunnerVoList.stream().noneMatch(o -> Objects.equals(o.getRunnerMapId(), j.getRunnerMapId()))).collect(Collectors.toList()); for (RunnerMapVo insertRunnerVo : insertRunnerList) { autoexecJobMapper.insertJobPhaseRunner(jobPhaseVo.getJobId(), jobPhaseVo.getGroupId(), jobPhaseVo.getId(), insertRunnerVo.getRunnerMapId(), jobPhaseVo.getLcd()); } @@ -1091,7 +1094,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC ResourceSearchVo searchVo = getResourceSearchVoWithCmdbGroupType(jobVo); List resourceVoList = resourceCrossoverMapper.getResourceListByResourceVoList(ipPortNameList, searchVo); if (CollectionUtils.isNotEmpty(resourceVoList)) { - updateJobPhaseNode(jobVo, resourceVoList, userName, protocolId, false); + updateJobPhaseNode(jobVo, resourceVoList, userName, protocolId); //重置节点状态 //List jobNodeVoList = autoexecJobMapper.getJobPhaseNodeListWithRunnerByJobPhaseIdAndExceptStatusList(jobVo.getCurrentPhase().getId(), Collections.singletonList(JobNodeStatus.IGNORED.getValue())); //resetJobNodeStatus(jobVo, jobNodeVoList); @@ -1276,46 +1279,54 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } } ResourceSearchVo searchVo = getResourceSearchVoWithCmdbGroupType(jobVo, filterJson); - searchVo.setPageSizeBatch(1000); + searchVo.setMaxPageSize(50000); + searchVo.setPageSize(50000); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - int count; + List idList; StringBuilder sqlSb = new StringBuilder(); if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); - count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo, sqlSb.toString()); + idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo, sqlSb.toString()); } else { - count = resourceCrossoverMapper.getResourceCount(searchVo); + idList = resourceCrossoverMapper.getResourceIdList(searchVo); } - + int count = idList.size(); if (count > 0) { - int pageCount = PageUtil.getPageCount(count, searchVo.getPageSize()); - TransactionStatus transactionStatus = null; - try { - transactionStatus = TransactionUtil.openTx(); - for (int i = 1; i <= pageCount; i++) { - searchVo.setCurrentPage(i); - List idList; - if (searchVo.isCustomCondition()) { - idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo, sqlSb.toString()); - } else { - idList = resourceCrossoverMapper.getResourceIdList(searchVo); - } - if (CollectionUtils.isEmpty(idList)) { - continue; - } - List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); - if (CollectionUtils.isNotEmpty(resourceList)) { - long updateJobPhaseNode = System.currentTimeMillis(); - updateJobPhaseNode(jobVo, resourceList, userName, protocolId); - logger.debug((System.currentTimeMillis() - updateJobPhaseNode) + " ##updateJobPhaseNode:-------------------------------------------------------------------------------"); - } + int index = 0; + List idPageList = new ArrayList<>(); + for (int i = 0; i < count; i++) { + if (index < 1000) { + idPageList.add(idList.get(i)); + index++; + continue; + } + i--; + long bbb = System.currentTimeMillis(); + List resourceList = resourceCrossoverMapper.getResourceListByIdList(idPageList); + System.out.println((System.currentTimeMillis() - bbb) + " ##bbb:-------------------------------------------------------------------------------"); + if (CollectionUtils.isNotEmpty(resourceList)) { + long updateJobPhaseNode = System.currentTimeMillis(); + updateJobPhaseNode(jobVo, resourceList, userName, protocolId); + System.out.println((System.currentTimeMillis() - updateJobPhaseNode) + " ##updateJobPhaseNode:-------------------------------------------------------------------------------"); + logger.debug((System.currentTimeMillis() - updateJobPhaseNode) + " ##updateJobPhaseNode:-------------------------------------------------------------------------------"); } - isHasNode = true; - TransactionUtil.commitTx(transactionStatus); - } catch (Exception e) { - TransactionUtil.rollbackTx(transactionStatus); - throw e; + index = 0; + idPageList.clear(); } + //补充最后一次循环数据 + if (CollectionUtils.isNotEmpty(idPageList)) { + long bbb = System.currentTimeMillis(); + List resourceList = resourceCrossoverMapper.getResourceListByIdList(idPageList); + System.out.println((System.currentTimeMillis() - bbb) + " ##bbb:-------------------------------------------------------------------------------"); + if (CollectionUtils.isNotEmpty(resourceList)) { + long updateJobPhaseNode = System.currentTimeMillis(); + updateJobPhaseNode(jobVo, resourceList, userName, protocolId); + System.out.println((System.currentTimeMillis() - updateJobPhaseNode) + " ##updateJobPhaseNode:-------------------------------------------------------------------------------"); + logger.debug((System.currentTimeMillis() - updateJobPhaseNode) + " ##updateJobPhaseNode:-------------------------------------------------------------------------------"); + } + idPageList.clear(); + } + isHasNode = true; } //针对巡检补充os 资产 if (Objects.equals(jobVo.getSource(), neatlogic.framework.inspect.constvalue.JobSource.INSPECT_APP.getValue())) { @@ -1331,9 +1342,9 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC searchVo.setRowNum(rowNum); for (int currentPage = 1; currentPage <= searchVo.getPageCount(); currentPage++) { searchVo.setCurrentPage(currentPage); - List idList = resourceCrossoverMapper.getOsResourceIdListByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); - if (CollectionUtils.isNotEmpty(idList)) { - List resourceList = resourceCrossoverMapper.getResourceByIdList(idList); + List idOsList = resourceCrossoverMapper.getOsResourceIdListByAppSystemIdAndAppModuleIdAndEnvIdAndTypeId(searchVo); + if (CollectionUtils.isNotEmpty(idOsList)) { + List resourceList = resourceCrossoverMapper.getResourceByIdList(idOsList); if (CollectionUtils.isNotEmpty(resourceList)) { updateJobPhaseNode(jobVo, resourceList, userName, protocolId); isHasNode = true; @@ -1356,56 +1367,49 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC * @param protocolId 协议id */ private void updateJobPhaseNode(AutoexecJobVo jobVo, List resourceVoList, String userName, Long protocolId) { - updateJobPhaseNode(jobVo, resourceVoList, userName, protocolId, true); - } - - /** - * 跟新作业阶段阶段 - * - * @param jobVo 作业 - * @param resourceVoList 最新阶段资产列表 - * @param userName 账号 - * @param protocolId 协议id - * @param isResetNode 是否需要重置节点状态 - */ - private void updateJobPhaseNode(AutoexecJobVo jobVo, List resourceVoList, String userName, Long protocolId, Boolean isResetNode) { AutoexecJobPhaseVo jobPhaseVo = jobVo.getCurrentPhase(); List nodeList = new ArrayList<>(); - List nodeRunnerList = new ArrayList<>(); + //List nodeRunnerList = new ArrayList<>(); + //List resourceIdList = new ArrayList<>(); boolean isNeedLncd;//用于判断是否需要更新lncd(用于判断是否需要重新下载节点) //新增节点需重新下载 List resourceIdList = resourceVoList.stream().map(ResourceVo::getId).collect(Collectors.toList()); - List originNodeList = autoexecJobMapper.getJobPhaseNodeListByJobPhaseIdAndResourceIdList(jobPhaseVo.getId(), resourceIdList); - isNeedLncd = originNodeList.size() != resourceVoList.size(); - //恢复删除节点需重新下载 - if (!isNeedLncd) { - List originDeleteNodeList = autoexecJobMapper.getJobPhaseNodeListByJobPhaseIdAndResourceIdListAndIsDelete(jobPhaseVo.getId(), resourceVoList.stream().map(ResourceVo::getId).collect(Collectors.toList())); - isNeedLncd = !originDeleteNodeList.isEmpty(); - } - if (isNeedLncd) { - //重新下载 - autoexecJobMapper.updateJobPhaseLncdById(jobPhaseVo.getId(), jobPhaseVo.getLcd()); - } +// List originNodeList = autoexecJobMapper.getJobPhaseNodeListByJobPhaseIdAndResourceIdList(jobPhaseVo.getId(), resourceIdList); +// isNeedLncd = originNodeList.size() != resourceVoList.size(); +// //恢复删除节点需重新下载 +// if (!isNeedLncd) { +// List originDeleteNodeList = autoexecJobMapper.getJobPhaseNodeListByJobPhaseIdAndResourceIdListAndIsDelete(jobPhaseVo.getId(), resourceVoList.stream().map(ResourceVo::getId).collect(Collectors.toList())); +// isNeedLncd = !originDeleteNodeList.isEmpty(); +// } +// if (isNeedLncd) { +// //重新下载 +// autoexecJobMapper.updateJobPhaseLncdById(jobPhaseVo.getId(), jobPhaseVo.getLcd()); +// } resourceVoList.forEach(resourceVo -> { AutoexecJobPhaseNodeVo jobPhaseNodeVo; - Optional jobPhaseNodeVoOptional = originNodeList.stream().filter(o -> Objects.equals(o.getResourceId(), resourceVo.getId())).findFirst(); - if (!jobPhaseNodeVoOptional.isPresent()) { - jobPhaseNodeVo = new AutoexecJobPhaseNodeVo(resourceVo, jobPhaseVo.getJobId(), jobPhaseVo, JobNodeStatus.PENDING.getValue(), userName, protocolId); - jobPhaseVo.setCurrentNode(jobPhaseNodeVo); - jobPhaseNodeVo.setPort(resourceVo.getPort()); + // Optional jobPhaseNodeVoOptional = originNodeList.stream().filter(o -> Objects.equals(o.getResourceId(), resourceVo.getId())).findFirst(); + //if (!jobPhaseNodeVoOptional.isPresent()) { + jobPhaseNodeVo = new AutoexecJobPhaseNodeVo(resourceVo, jobPhaseVo.getJobId(), jobPhaseVo, JobNodeStatus.PENDING.getValue(), userName, protocolId); + jobPhaseVo.setCurrentNode(jobPhaseNodeVo); + try { jobPhaseNodeVo.setRunnerMapId(getRunnerByTargetIp(jobVo)); - if (jobPhaseNodeVo.getRunnerMapId() == null) { - throw new RunnerNotMatchException(jobPhaseNodeVo.getHost(), resourceVo.getId()); - } - } else { - jobPhaseNodeVo = jobPhaseNodeVoOptional.get(); - jobPhaseNodeVo.setLcd(jobPhaseVo.getLcd()); - if (Boolean.TRUE.equals(isResetNode)) { - jobPhaseNodeVo.setStatus(JobNodeStatus.PENDING.getValue()); - } - } + }catch (IPIsIncorrectException e){ + jobPhaseNodeVo.setErrorType(AutoexecJobPhaseNodeErrorType.IP_INVALID.getValue()); + jobPhaseNodeVo.setStatus(JobNodeStatus.INVALID.getValue()); + } + if (jobPhaseNodeVo.getErrorType() == null && jobPhaseNodeVo.getRunnerMapId() == null) { + jobPhaseNodeVo.setErrorType(AutoexecJobPhaseNodeErrorType.RUNNER_NOT_MATCH.getValue()); + jobPhaseNodeVo.setStatus(JobNodeStatus.INVALID.getValue()); + } +// } else { +// jobPhaseNodeVo = jobPhaseNodeVoOptional.get(); +// jobPhaseNodeVo.setLcd(jobPhaseVo.getLcd()); +// if (Boolean.TRUE.equals(isResetNode)) { +// jobPhaseNodeVo.setStatus(JobNodeStatus.PENDING.getValue()); +// } +// } nodeList.add(jobPhaseNodeVo); - nodeRunnerList.add(new AutoexecJobPhaseNodeRunnerVo(jobPhaseNodeVo)); + //nodeRunnerList.add(new AutoexecJobPhaseNodeRunnerVo(jobPhaseNodeVo)); //如果大于 0,说明存在旧数据 // Integer result = autoexecJobMapper.updateJobPhaseNodeByJobIdAndPhaseIdAndResourceId(jobPhaseNodeVo); // if (result == null || result == 0) { @@ -1413,10 +1417,15 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC // //防止旧resource 所以ignore insert // autoexecJobMapper.insertIgnoreJobPhaseNodeRunner(new AutoexecJobPhaseNodeRunnerVo(jobPhaseNodeVo)); // } + //resourceIdList.add(resourceVo.getId()); }); - autoexecJobMapper.batchInsertJobPhaseNode(nodeList); - autoexecJobMapper.batchInsertJobPhaseNodeRunner(nodeRunnerList); + if (jobVo.getIsFirstInit() == 1) { + autoexecJobMapper.batchInsertJobPhaseNode(nodeList); + } else { + autoexecJobMapper.updateJobPhaseNodeBatch(jobPhaseVo.getId(), resourceIdList, JobNodeStatus.PENDING.getValue(), jobPhaseVo.getLcd().getTime()); + autoexecJobMapper.batchInsertIgnoreJobPhaseNode(nodeList); + } } @Override @@ -1476,7 +1485,6 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC autoexecJobMapper.deleteJobInvokeByJobId(jobId); autoexecJobMapper.deleteJobResourceInspectByJobId(jobId); autoexecJobMapper.deleteJobPhaseRunnerByJobId(jobId); - autoexecJobMapper.deleteJobPhaseNodeRunnerByJobId(jobId); autoexecJobMapper.deleteJobPhaseOperationByJobId(jobId); autoexecJobMapper.deleteJobPhaseNodeByJobId(jobId); autoexecJobMapper.deleteJobPhaseByJobId(jobId); @@ -1518,8 +1526,9 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC toolVoList = autoexecToolMapper.getToolListByIdList(operationIdMap.get(CombopOperationType.TOOL.getValue())); toolVoList.forEach(o -> operationIdNameMap.put(o.getId(), o.getName())); } - List autoexecJobVos = autoexecJobMapper.getJobWarnCountAndStatus(jobIdList); - Map autoexecJobVoMap = autoexecJobVos.stream().collect(toMap(AutoexecJobVo::getId, o -> o)); + //TODO 性能问题 待优化 + //List autoexecJobVos = autoexecJobMapper.getJobWarnCountAndStatus(jobIdList); + //Map autoexecJobVoMap = autoexecJobVos.stream().collect(toMap(AutoexecJobVo::getId, o -> o)); Map> parentJobChildrenListMap = new HashMap<>(); if (StringUtils.isNotBlank(jobVo.getKeyword()) && CollectionUtils.isNotEmpty(jobVoList)) { @@ -1566,13 +1575,13 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC autoexecJobSourceActionHandler.getJobActionAuth(vo); } //补充warnCount和ignore tooltips - AutoexecJobVo jobWarnCountStatus = autoexecJobVoMap.get(vo.getId()); - if (jobWarnCountStatus != null) { - vo.setWarnCount(jobWarnCountStatus.getWarnCount()); - if (jobWarnCountStatus.getStatus().contains(JobNodeStatus.IGNORED.getValue())) { - vo.setIsHasIgnored(1); - } - } +// AutoexecJobVo jobWarnCountStatus = autoexecJobVoMap.get(vo.getId()); +// if (jobWarnCountStatus != null) { +// vo.setWarnCount(jobWarnCountStatus.getWarnCount()); +// if (jobWarnCountStatus.getStatus().contains(JobNodeStatus.IGNORED.getValue())) { +// vo.setIsHasIgnored(1); +// } +// } if (vo.getParentId() != null) { vo.setChildren(parentJobChildrenListMap.get(vo.getId())); } diff --git a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql index 263f18b4..15afd613 100644 --- a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql +++ b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql @@ -8,4 +8,16 @@ ALTER TABLE `autoexec_job_phase_node` DROP INDEX `idx_host_port`; ALTER TABLE `autoexec_job_phase_node` DROP INDEX `idx_lcd`; -ALTER TABLE `autoexec_job_phase_node` DROP INDEX `idx_resource_id_job_phase_id`; \ No newline at end of file +ALTER TABLE `autoexec_job_phase_node` DROP INDEX `idx_resource_id_job_phase_id`; + +ALTER TABLE `autoexec_job_phase_node` ADD INDEX `idx_phaseid_updatetag`(`job_phase_id`, `update_tag`) USING BTREE; + +ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `runner_map_id` bigint NULL COMMENT '执行器id' AFTER `is_executed`; + +ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `update_tag` bigint NULL COMMENT '最近一次更新标记' AFTER `runner_map_id`; + +ALTER TABLE `autoexec_job_phase_node` ADD UNIQUE INDEX `idx_phaseid_resourceid`(`job_phase_id`, `resource_id`) USING BTREE; + +ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `error_type` int NULL COMMENT '异常信息' AFTER `update_tag`; + +ALTER TABLE `autoexec_job_phase_node` MODIFY COLUMN `status` enum('succeed','pending','failed','ignored','running','aborted','aborting','waitInput','pausing','paused','error') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态' AFTER `end_time`; \ No newline at end of file -- Gitee From 8d8354d00e6b494127bf7005353dda3367df5d61 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Thu, 21 Nov 2024 17:25:45 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E4=BD=9C=E4=B8=9A=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96=20#[1293?= =?UTF-8?q?323044618240]=E8=87=AA=E5=8A=A8=E5=8C=96=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5=E8=8A=82=E7=82=B9=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=20http://192.168.0.96:8090/demo/rdm?= =?UTF-8?q?.html#/story-detail/939050947543040/939050947543042/12933230446?= =?UTF-8?q?18240?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/job/exec/UpdateAutoexecJobPhaseStatusApi.java | 2 +- .../action/handler/AutoexecJobPhaseReFireHandler.java | 10 ++++++++-- .../job/action/handler/AutoexecJobReFireHandler.java | 3 +-- .../autoexec/service/AutoexecJobServiceImpl.java | 2 -- .../autoexec/changelog/2024-11-17/neatlogic_tenant.sql | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/api/job/exec/UpdateAutoexecJobPhaseStatusApi.java b/src/main/java/neatlogic/module/autoexec/api/job/exec/UpdateAutoexecJobPhaseStatusApi.java index 08f02bd0..90cf6178 100644 --- a/src/main/java/neatlogic/module/autoexec/api/job/exec/UpdateAutoexecJobPhaseStatusApi.java +++ b/src/main/java/neatlogic/module/autoexec/api/job/exec/UpdateAutoexecJobPhaseStatusApi.java @@ -150,7 +150,7 @@ public class UpdateAutoexecJobPhaseStatusApi extends PrivateApiComponentBase { void updateJobPhaseStatus(AutoexecJobVo jobVo, AutoexecJobPhaseVo jobPhaseVo) { int warnCount = 0; - String finalJobPhaseStatus = JobPhaseStatus.PENDING.getValue(); + String finalJobPhaseStatus; Map statusCountMap = new HashMap<>(); for (JobPhaseStatus jobStatus : JobPhaseStatus.values()) { statusCountMap.put(jobStatus.getValue(), 0); diff --git a/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobPhaseReFireHandler.java b/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobPhaseReFireHandler.java index 0dd98b23..d991f84c 100644 --- a/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobPhaseReFireHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobPhaseReFireHandler.java @@ -38,6 +38,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -85,18 +86,23 @@ public class AutoexecJobPhaseReFireHandler extends AutoexecJobActionHandlerBase autoexecJobService.refreshJobPhaseNodeList(jobVo.getId(), jobVo.getExecuteJobPhaseList()); } if (Objects.equals(jobVo.getAction(), JobAction.REFIRE.getValue())) { - List needResetNodeList = autoexecJobMapper.getJobPhaseNodeListByJobIdAndPhaseIdAndExceptStatus(jobVo.getId(), jobPhaseVo.getId(), Arrays.asList(JobNodeStatus.IGNORED.getValue(), JobNodeStatus.SUCCEED.getValue())); + List needResetNodeList = autoexecJobMapper.getJobPhaseNodeListByJobIdAndPhaseIdAndExceptStatus(jobPhaseVo.getId(), Arrays.asList(JobNodeStatus.IGNORED.getValue(), JobNodeStatus.SUCCEED.getValue(), JobNodeStatus.INVALID.getValue())); if (CollectionUtils.isNotEmpty(needResetNodeList)) { - autoexecJobMapper.updateJobPhaseNodeListStatus(needResetNodeList.stream().map(AutoexecJobPhaseNodeVo::getId).collect(Collectors.toList()), JobNodeStatus.PENDING.getValue()); jobVo.setExecuteJobNodeVoList(needResetNodeList); List runnerMapVos = autoexecJobMapper.getJobPhaseNodeRunnerListByJobPhaseId(jobPhaseVo.getId()); if (CollectionUtils.isEmpty(runnerMapVos)) { throw new AutoexecJobPhaseRunnerNotFoundException(jobPhaseVo.getJobId(), jobPhaseVo.getName(), jobPhaseVo.getId()); } autoexecJobService.updateJobNodeStatus(runnerMapVos, jobVo, JobNodeStatus.PENDING.getValue()); + autoexecJobMapper.updateJobPhaseNodeListStatusByPhaseIdAndExceptStatus(jobPhaseVo.getId(), Arrays.asList(JobNodeStatus.IGNORED.getValue(), JobNodeStatus.SUCCEED.getValue(), JobNodeStatus.INVALID.getValue()),JobNodeStatus.PENDING.getValue()); jobVo.setExecuteJobNodeVoList(null); } } + Integer pendingCount = autoexecJobMapper.isHasPendingNode(jobPhaseVo.getId()); + if(pendingCount == null){ + autoexecJobMapper.updateJobPhaseStatusByPhaseIdList(Collections.singletonList(jobPhaseVo.getId()),JobPhaseStatus.COMPLETED.getValue()); + return null; + } jobPhaseVo.setJobGroupVo(autoexecJobMapper.getJobGroupById(jobPhaseVo.getGroupId())); autoexecJobService.executeGroup(jobVo); return null; diff --git a/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java b/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java index 7662c84a..94d0469e 100644 --- a/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/action/handler/AutoexecJobReFireHandler.java @@ -17,7 +17,6 @@ package neatlogic.module.autoexec.job.action.handler; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.JobAction; -import neatlogic.framework.autoexec.constvalue.JobNodeStatus; import neatlogic.framework.autoexec.constvalue.JobPhaseStatus; import neatlogic.framework.autoexec.constvalue.JobStatus; import neatlogic.framework.autoexec.dao.mapper.AutoexecJobMapper; @@ -84,7 +83,7 @@ public class AutoexecJobReFireHandler extends AutoexecJobActionHandlerBase { //重刷所有phase node autoexecJobService.refreshJobNodeList(jobVo.getId()); //更新没有删除的节点为"未开始"状态 - autoexecJobMapper.updateJobPhaseNodeStatusByJobIdAndIsDelete(jobVo.getId(), JobNodeStatus.PENDING.getValue(), 0); + //autoexecJobMapper.updateJobPhaseNodeStatusByJobIdAndIsDelete(jobVo.getId(), JobNodeStatus.PENDING.getValue(), 0); jobVo.setIsFirstFire(1); } else if (Objects.equals(jobVo.getAction(), JobAction.REFIRE.getValue())) { /*寻找中止|暂停|失败的phase diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index a8390051..bc332642 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -1826,8 +1826,6 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC */ @Override public void checkRunnerHealth(List runnerVos) { - RestVo restVo; - String result; String url; for (RunnerMapVo runner : runnerVos) { if (runner.getRunnerMapId() == null) { diff --git a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql index 15afd613..14855db3 100644 --- a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql +++ b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql @@ -20,4 +20,4 @@ ALTER TABLE `autoexec_job_phase_node` ADD UNIQUE INDEX `idx_phaseid_resourceid`( ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `error_type` int NULL COMMENT '异常信息' AFTER `update_tag`; -ALTER TABLE `autoexec_job_phase_node` MODIFY COLUMN `status` enum('succeed','pending','failed','ignored','running','aborted','aborting','waitInput','pausing','paused','error') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态' AFTER `end_time`; \ No newline at end of file +ALTER TABLE `autoexec_job_phase_node` MODIFY COLUMN `status` enum('succeed','pending','failed','ignored','running','aborted','aborting','waitInput','pausing','paused','invalid') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态' AFTER `end_time`; \ No newline at end of file -- Gitee From 44ba19f057bb6f4372e0e6aee116bff4915bd578 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Thu, 21 Nov 2024 18:29:17 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E4=BD=9C=E4=B8=9A=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96=20#[1293?= =?UTF-8?q?323044618240]=E8=87=AA=E5=8A=A8=E5=8C=96=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5=E8=8A=82=E7=82=B9=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=20http://192.168.0.96:8090/demo/rdm?= =?UTF-8?q?.html#/story-detail/939050947543040/939050947543042/12933230446?= =?UTF-8?q?18240?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoexec/changelog/2024-11-17/neatlogic_tenant.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql index 14855db3..07f331c2 100644 --- a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql +++ b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql @@ -10,14 +10,14 @@ ALTER TABLE `autoexec_job_phase_node` DROP INDEX `idx_lcd`; ALTER TABLE `autoexec_job_phase_node` DROP INDEX `idx_resource_id_job_phase_id`; -ALTER TABLE `autoexec_job_phase_node` ADD INDEX `idx_phaseid_updatetag`(`job_phase_id`, `update_tag`) USING BTREE; - ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `runner_map_id` bigint NULL COMMENT '执行器id' AFTER `is_executed`; ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `update_tag` bigint NULL COMMENT '最近一次更新标记' AFTER `runner_map_id`; -ALTER TABLE `autoexec_job_phase_node` ADD UNIQUE INDEX `idx_phaseid_resourceid`(`job_phase_id`, `resource_id`) USING BTREE; - ALTER TABLE `autoexec_job_phase_node` ADD COLUMN `error_type` int NULL COMMENT '异常信息' AFTER `update_tag`; -ALTER TABLE `autoexec_job_phase_node` MODIFY COLUMN `status` enum('succeed','pending','failed','ignored','running','aborted','aborting','waitInput','pausing','paused','invalid') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态' AFTER `end_time`; \ No newline at end of file +ALTER TABLE `autoexec_job_phase_node` MODIFY COLUMN `status` enum('succeed','pending','failed','ignored','running','aborted','aborting','waitInput','pausing','paused','invalid') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态' AFTER `end_time`; + +ALTER TABLE `autoexec_job_phase_node` ADD INDEX `idx_phaseid_updatetag`(`job_phase_id`, `update_tag`) USING BTREE; + +ALTER TABLE `autoexec_job_phase_node` ADD UNIQUE INDEX `idx_phaseid_resourceid`(`job_phase_id`, `resource_id`) USING BTREE; \ No newline at end of file -- Gitee From b6b1c7bca7cb437d295f44d46d333f47df4a2cf5 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Mon, 25 Nov 2024 12:19:56 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E4=BD=9C=E4=B8=9A=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96=20#[1293?= =?UTF-8?q?323044618240]=E8=87=AA=E5=8A=A8=E5=8C=96=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8F=92=E5=85=A5=E8=8A=82=E7=82=B9=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=20http://192.168.0.96:8090/demo/rdm?= =?UTF-8?q?.html#/story-detail/939050947543040/939050947543042/12933230446?= =?UTF-8?q?18240?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoexec/changelog/2024-11-17/neatlogic_tenant.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql index 07f331c2..58269114 100644 --- a/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql +++ b/src/main/resources/neatlogic/resources/autoexec/changelog/2024-11-17/neatlogic_tenant.sql @@ -20,4 +20,6 @@ ALTER TABLE `autoexec_job_phase_node` MODIFY COLUMN `status` enum('succeed','pen ALTER TABLE `autoexec_job_phase_node` ADD INDEX `idx_phaseid_updatetag`(`job_phase_id`, `update_tag`) USING BTREE; -ALTER TABLE `autoexec_job_phase_node` ADD UNIQUE INDEX `idx_phaseid_resourceid`(`job_phase_id`, `resource_id`) USING BTREE; \ No newline at end of file +ALTER TABLE `autoexec_job_phase_node` ADD UNIQUE INDEX `idx_phaseid_resourceid`(`job_phase_id`, `resource_id`) USING BTREE; + +UPDATE autoexec_job_phase_node AS a JOIN autoexec_job_phase_node_runner AS b ON a.id = b.node_id SET a.runner_map_id = b.runner_map_id; \ No newline at end of file -- Gitee