diff --git a/pkg/compute/models/dbinstance_backups.go b/pkg/compute/models/dbinstance_backups.go index b4928c4c18..80651fb105 100644 --- a/pkg/compute/models/dbinstance_backups.go +++ b/pkg/compute/models/dbinstance_backups.go @@ -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") diff --git a/pkg/compute/regiondrivers/managedvirtual.go b/pkg/compute/regiondrivers/managedvirtual.go index 7049de7844..cdc1864018 100644 --- a/pkg/compute/regiondrivers/managedvirtual.go +++ b/pkg/compute/regiondrivers/managedvirtual.go @@ -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, "")