diff --git a/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudDiskServiceImpl.java b/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudDiskServiceImpl.java index 959823dfc..7e550ec7c 100644 --- a/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudDiskServiceImpl.java +++ b/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudDiskServiceImpl.java @@ -586,7 +586,7 @@ public void saveCloudDisks(List f2cDisks, String accountId, String sour vmCloudDisk.setCreateTime(LocalDateTime.now()); } String diskId = UUID.randomUUID().toString().replace("-", ""); - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda() .eq(VmCloudDisk::getAccountId, accountId) .eq(VmCloudDisk::getRegion, f2cDisk.getRegion()) diff --git a/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudServerServiceImpl.java b/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudServerServiceImpl.java index b70b7924a..7e7ce7869 100644 --- a/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudServerServiceImpl.java +++ b/services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudServerServiceImpl.java @@ -1,5 +1,6 @@ package com.fit2cloud.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -428,6 +429,16 @@ private void operate(String vmId, String jobDescription, BiFunction wrapper = new LambdaQueryWrapper() + .ne(VmCloudServer::getId, vmCloudServer.getId()) + .eq(VmCloudServer::getInstanceUuid, vmCloudServer.getInstanceUuid()) + .eq(VmCloudServer::getAccountId, vmCloudServer.getAccountId()); + this.remove(wrapper); + } + this.updateById(vmCloudServer); if (F2CInstanceStatus.Deleted.name().equalsIgnoreCase(vmCloudServer.getInstanceStatus())) { @@ -569,16 +580,31 @@ private void createServerJob(String serverId, String createRequest, CreateServer e.printStackTrace(); } - // 保存云主机上的磁盘信息 if (StringUtils.isEmpty(vmCloudServer.getSourceId())) { vmCloudServer.setSourceId(sourceId); } if (StringUtils.isEmpty(vmCloudServer.getRegion())) { vmCloudServer.setRegion(regionId); } - saveCloudServerDisks(vmCloudServer); + try { + // 保存云主机上的磁盘信息 + saveCloudServerDisks(vmCloudServer); + } catch (Exception e) { + //更新磁盘信息不影响创建任务 + //todo 后续如何加日志 + e.printStackTrace(); + } + + try { + //如果真的更新信息失败了,怎么把最后状态修改为失败? + modifyResource.accept(vmCloudServer); + } catch (Exception e) { + jobRecord.setStatus(JobStatusConstants.FAILED); + jobRecord.setResult(e.getMessage()); + LogUtil.error("Create Cloud server fail - {}", e.getMessage()); + e.printStackTrace(); + } - modifyResource.accept(vmCloudServer); jobRecord.setFinishTime(DateUtil.getSyncTime()); modifyJobRecord.accept(jobRecord); } catch (Throwable e) {