Skip to content

Commit

Permalink
Merge pull request #56 from CloudExplorer-Dev/[email protected]@sync_during_c…
Browse files Browse the repository at this point in the history
…reating

fix(vm-service): 创建中的机器,遇到同步任务,会在列表中多一条记录
  • Loading branch information
shaohuzhang1 authored Apr 20, 2023
2 parents 830a882 + 24ecc13 commit b9d69e6
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@ public void saveCloudDisks(List<F2CDisk> f2cDisks, String accountId, String sour
vmCloudDisk.setCreateTime(LocalDateTime.now());
}
String diskId = UUID.randomUUID().toString().replace("-", "");
QueryWrapper<VmCloudDisk> queryWrapper = new QueryWrapper();
QueryWrapper<VmCloudDisk> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.eq(VmCloudDisk::getAccountId, accountId)
.eq(VmCloudDisk::getRegion, f2cDisk.getRegion())
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -428,6 +429,16 @@ private void operate(String vmId, String jobDescription, BiFunction<ICloudProvid
}

private void modifyResource(VmCloudServer vmCloudServer) {
//处理可能同步到的数据,会影响更新操作
if (StringUtils.isNotBlank(vmCloudServer.getInstanceUuid()) && StringUtils.isNotBlank(vmCloudServer.getAccountId())) {
//需要删除自己以外的机器同uuid机器,防止更新失败
LambdaQueryWrapper<VmCloudServer> wrapper = new LambdaQueryWrapper<VmCloudServer>()
.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())) {
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit b9d69e6

Please sign in to comment.