diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index ddb6648421..e11c8e704a 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -1473,8 +1473,11 @@ func (provider *SCloudprovider) markProviderDisconnected(ctx context.Context, us if err != nil { return err } - provider.SetStatus(userCred, api.CLOUD_PROVIDER_DISCONNECTED, reason) - return provider.ClearSchedDescCache() + if provider.Status != api.CLOUD_PROVIDER_DISCONNECTED { + provider.SetStatus(userCred, api.CLOUD_PROVIDER_DISCONNECTED, reason) + return provider.ClearSchedDescCache() + } + return nil } func (cprvd *SCloudprovider) updateName(ctx context.Context, userCred mcclient.TokenCredential, name, desc string) error { diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index ebc6a0e6bb..b9c9fd59dc 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -1929,8 +1929,7 @@ func (hh *SHost) syncWithCloudHost(ctx context.Context, userCred mcclient.TokenC return nil }) if err != nil { - log.Errorf("syncWithCloudZone error %s", err) - return err + return errors.Wrapf(err, "syncWithCloudZone") } db.OpsLog.LogSyncUpdate(hh, diff, userCred) @@ -1946,8 +1945,10 @@ func (hh *SHost) syncWithCloudHost(ctx context.Context, userCred mcclient.TokenC return err } - if err := HostManager.ClearSchedDescCache(hh.Id); err != nil { - log.Errorf("ClearSchedDescCache for host %s error %v", hh.Name, err) + if len(diff) > 0 { + if err := HostManager.ClearSchedDescCache(hh.Id); err != nil { + log.Errorf("ClearSchedDescCache for host %s error %v", hh.Name, err) + } } return nil diff --git a/pkg/compute/tasks/cloud_provider_sync_info_task.go b/pkg/compute/tasks/cloud_provider_sync_info_task.go index b5658977c8..4c673dd0ca 100644 --- a/pkg/compute/tasks/cloud_provider_sync_info_task.go +++ b/pkg/compute/tasks/cloud_provider_sync_info_task.go @@ -100,7 +100,6 @@ func (self *CloudProviderSyncInfoTask) OnSyncCloudProviderPreInfoCompleteFailed( func (self *CloudProviderSyncInfoTask) OnSyncCloudProviderInfoComplete(ctx context.Context, obj db.IStandaloneModel, body jsonutils.JSONObject) { provider := obj.(*models.SCloudprovider) - provider.CleanSchedCache() db.OpsLog.LogEvent(provider, db.ACT_SYNC_HOST_COMPLETE, "", self.UserCred) logclient.AddActionLogWithStartable(self, provider, getAction(self.Params), body, self.UserCred, true) self.SetStageComplete(ctx, nil) @@ -108,7 +107,6 @@ func (self *CloudProviderSyncInfoTask) OnSyncCloudProviderInfoComplete(ctx conte func (self *CloudProviderSyncInfoTask) OnSyncCloudProviderInfoCompleteFailed(ctx context.Context, obj db.IStandaloneModel, body jsonutils.JSONObject) { provider := obj.(*models.SCloudprovider) - provider.CleanSchedCache() db.OpsLog.LogEvent(provider, db.ACT_SYNC_HOST_FAILED, "", self.UserCred) logclient.AddActionLogWithStartable(self, provider, getAction(self.Params), body, self.UserCred, false) self.SetStageFailed(ctx, nil)