Skip to content

Commit b9d69e6

Browse files
authored
Merge pull request #56 from CloudExplorer-Dev/[email protected]@sync_during_creating
fix(vm-service): 创建中的机器,遇到同步任务,会在列表中多一条记录
2 parents 830a882 + 24ecc13 commit b9d69e6

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudDiskServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ public void saveCloudDisks(List<F2CDisk> f2cDisks, String accountId, String sour
586586
vmCloudDisk.setCreateTime(LocalDateTime.now());
587587
}
588588
String diskId = UUID.randomUUID().toString().replace("-", "");
589-
QueryWrapper<VmCloudDisk> queryWrapper = new QueryWrapper();
589+
QueryWrapper<VmCloudDisk> queryWrapper = new QueryWrapper<>();
590590
queryWrapper.lambda()
591591
.eq(VmCloudDisk::getAccountId, accountId)
592592
.eq(VmCloudDisk::getRegion, f2cDisk.getRegion())

services/vm-service/backend/src/main/java/com/fit2cloud/service/impl/VmCloudServerServiceImpl.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.fit2cloud.service.impl;
22

3+
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
34
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
45
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
56
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -428,6 +429,16 @@ private void operate(String vmId, String jobDescription, BiFunction<ICloudProvid
428429
}
429430

430431
private void modifyResource(VmCloudServer vmCloudServer) {
432+
//处理可能同步到的数据,会影响更新操作
433+
if (StringUtils.isNotBlank(vmCloudServer.getInstanceUuid()) && StringUtils.isNotBlank(vmCloudServer.getAccountId())) {
434+
//需要删除自己以外的机器同uuid机器,防止更新失败
435+
LambdaQueryWrapper<VmCloudServer> wrapper = new LambdaQueryWrapper<VmCloudServer>()
436+
.ne(VmCloudServer::getId, vmCloudServer.getId())
437+
.eq(VmCloudServer::getInstanceUuid, vmCloudServer.getInstanceUuid())
438+
.eq(VmCloudServer::getAccountId, vmCloudServer.getAccountId());
439+
this.remove(wrapper);
440+
}
441+
431442
this.updateById(vmCloudServer);
432443

433444
if (F2CInstanceStatus.Deleted.name().equalsIgnoreCase(vmCloudServer.getInstanceStatus())) {
@@ -569,16 +580,31 @@ private void createServerJob(String serverId, String createRequest, CreateServer
569580
e.printStackTrace();
570581
}
571582

572-
// 保存云主机上的磁盘信息
573583
if (StringUtils.isEmpty(vmCloudServer.getSourceId())) {
574584
vmCloudServer.setSourceId(sourceId);
575585
}
576586
if (StringUtils.isEmpty(vmCloudServer.getRegion())) {
577587
vmCloudServer.setRegion(regionId);
578588
}
579-
saveCloudServerDisks(vmCloudServer);
589+
try {
590+
// 保存云主机上的磁盘信息
591+
saveCloudServerDisks(vmCloudServer);
592+
} catch (Exception e) {
593+
//更新磁盘信息不影响创建任务
594+
//todo 后续如何加日志
595+
e.printStackTrace();
596+
}
597+
598+
try {
599+
//如果真的更新信息失败了,怎么把最后状态修改为失败?
600+
modifyResource.accept(vmCloudServer);
601+
} catch (Exception e) {
602+
jobRecord.setStatus(JobStatusConstants.FAILED);
603+
jobRecord.setResult(e.getMessage());
604+
LogUtil.error("Create Cloud server fail - {}", e.getMessage());
605+
e.printStackTrace();
606+
}
580607

581-
modifyResource.accept(vmCloudServer);
582608
jobRecord.setFinishTime(DateUtil.getSyncTime());
583609
modifyJobRecord.accept(jobRecord);
584610
} catch (Throwable e) {

0 commit comments

Comments
 (0)