fix(region): optimized rds backup create

This commit is contained in:
Qu Xuan
2020-11-30 17:45:21 +08:00
parent 3a6713a5d5
commit 4ab1fe75c0
2 changed files with 17 additions and 22 deletions
-16
View File
@@ -380,22 +380,6 @@ func (backup *SDBInstanceBackup) GetIDBInstanceBackup() (cloudprovider.ICloudDBI
if err != nil {
return nil, errors.Wrapf(err, "GetIDBInstance")
}
err = cloudprovider.Wait(time.Second*3, time.Second*15, func() (bool, error) {
backups, err := iRds.GetIDBInstanceBackups()
if err != nil {
return false, errors.Wrapf(err, "GetIDBInstanceBackups")
}
for i := range backups {
if backups[i].GetGlobalId() == backup.ExternalId {
return true, nil
}
}
log.Warningf("failed to found backup %s", backup.ExternalId)
return false, nil
})
if err != nil {
return nil, errors.Wrapf(cloudprovider.ErrNotFound, "timeout for search backup %s", backup.ExternalId)
}
backups, err := iRds.GetIDBInstanceBackups()
if err != nil {
return nil, errors.Wrapf(err, "GetIDBInstanceBackups")
+17 -6
View File
@@ -2555,14 +2555,25 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateDBInstanceBackup(ct
return nil, errors.Wrapf(err, "db.SetExternalId")
}
iBackup, err := backup.GetIDBInstanceBackup()
if err != nil {
return nil, errors.Wrapf(err, "backup.GetIDBInstanceBackup")
}
err = cloudprovider.Wait(time.Second*5, time.Minute*15, func() (bool, error) {
iBackup, err := backup.GetIDBInstanceBackup()
if err != nil {
if errors.Cause(err) == cloudprovider.ErrNotFound {
log.Warningf("GetIDBInstanceBackup: %v", err)
return false, nil
}
return false, errors.Wrapf(err, "GetIDBInstanceBackup")
}
err = backup.SyncWithCloudDBInstanceBackup(ctx, userCred, iBackup, instance.GetCloudprovider())
err = backup.SyncWithCloudDBInstanceBackup(ctx, userCred, iBackup, instance.GetCloudprovider())
if err != nil {
log.Warningf("sync backup info error: %v", err)
}
return true, nil
})
if err != nil {
log.Warningf("sync backup info error: %v", err)
return nil, errors.Wrapf(err, "cloudprovider.Wait backup sync")
}
instance.SetStatus(userCred, api.DBINSTANCE_RUNNING, "")