mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-30 18:23:35 +08:00
fix(region): optimized rds backup create
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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, "")
|
||||
|
||||
Reference in New Issue
Block a user