fix issue when cluster fails and recovers

Signed-off-by: Poor12 <shentiecheng@huawei.com>
This commit is contained in:
Poor12 2023-02-23 20:13:13 +08:00
parent eecadfd43a
commit e7f70a00b6
3 changed files with 8 additions and 5 deletions

View File

@ -105,7 +105,7 @@ func (c *ResourceBindingController) syncBinding(binding *workv1alpha2.ResourceBi
// So, just return without retry(requeue) would save unnecessary loop. // So, just return without retry(requeue) would save unnecessary loop.
return controllerruntime.Result{}, nil return controllerruntime.Result{}, nil
} }
klog.Errorf("Failed to fetch workload for resourceBinding(%s/%s). Error: %v", klog.Errorf("Failed to fetch workload for resourceBinding(%s/%s). Error: %v.",
binding.GetNamespace(), binding.GetName(), err) binding.GetNamespace(), binding.GetName(), err)
return controllerruntime.Result{Requeue: true}, err return controllerruntime.Result{Requeue: true}, err
} }

View File

@ -24,23 +24,23 @@ import (
var workPredicateFn = builder.WithPredicates(predicate.Funcs{ var workPredicateFn = builder.WithPredicates(predicate.Funcs{
CreateFunc: func(e event.CreateEvent) bool { return false }, CreateFunc: func(e event.CreateEvent) bool { return false },
UpdateFunc: func(e event.UpdateEvent) bool { UpdateFunc: func(e event.UpdateEvent) bool {
var statusesOld, statusesNew workv1alpha1.WorkStatus var oldStatus, newStatus workv1alpha1.WorkStatus
switch oldWork := e.ObjectOld.(type) { switch oldWork := e.ObjectOld.(type) {
case *workv1alpha1.Work: case *workv1alpha1.Work:
statusesOld = oldWork.Status oldStatus = oldWork.Status
default: default:
return false return false
} }
switch newWork := e.ObjectNew.(type) { switch newWork := e.ObjectNew.(type) {
case *workv1alpha1.Work: case *workv1alpha1.Work:
statusesNew = newWork.Status newStatus = newWork.Status
default: default:
return false return false
} }
return !reflect.DeepEqual(statusesOld, statusesNew) return !reflect.DeepEqual(oldStatus, newStatus)
}, },
DeleteFunc: func(event.DeleteEvent) bool { return true }, DeleteFunc: func(event.DeleteEvent) bool { return true },
GenericFunc: func(event.GenericEvent) bool { return false }, GenericFunc: func(event.GenericEvent) bool { return false },

View File

@ -52,6 +52,9 @@ func CreateOrUpdateWork(client client.Client, workMeta metav1.ObjectMeta, resour
var operationResult controllerutil.OperationResult var operationResult controllerutil.OperationResult
err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) { err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) {
operationResult, err = controllerutil.CreateOrUpdate(context.TODO(), client, runtimeObject, func() error { operationResult, err = controllerutil.CreateOrUpdate(context.TODO(), client, runtimeObject, func() error {
if !runtimeObject.DeletionTimestamp.IsZero() {
return fmt.Errorf("work %s/%s is being deleted", runtimeObject.GetNamespace(), runtimeObject.GetName())
}
runtimeObject.Spec = work.Spec runtimeObject.Spec = work.Spec
runtimeObject.Labels = work.Labels runtimeObject.Labels = work.Labels
runtimeObject.Annotations = work.Annotations runtimeObject.Annotations = work.Annotations