fix issue when cluster fails and recovers
Signed-off-by: Poor12 <shentiecheng@huawei.com>
This commit is contained in:
parent
eecadfd43a
commit
e7f70a00b6
|
@ -105,7 +105,7 @@ func (c *ResourceBindingController) syncBinding(binding *workv1alpha2.ResourceBi
|
|||
// So, just return without retry(requeue) would save unnecessary loop.
|
||||
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)
|
||||
return controllerruntime.Result{Requeue: true}, err
|
||||
}
|
||||
|
|
|
@ -24,23 +24,23 @@ import (
|
|||
var workPredicateFn = builder.WithPredicates(predicate.Funcs{
|
||||
CreateFunc: func(e event.CreateEvent) bool { return false },
|
||||
UpdateFunc: func(e event.UpdateEvent) bool {
|
||||
var statusesOld, statusesNew workv1alpha1.WorkStatus
|
||||
var oldStatus, newStatus workv1alpha1.WorkStatus
|
||||
|
||||
switch oldWork := e.ObjectOld.(type) {
|
||||
case *workv1alpha1.Work:
|
||||
statusesOld = oldWork.Status
|
||||
oldStatus = oldWork.Status
|
||||
default:
|
||||
return false
|
||||
}
|
||||
|
||||
switch newWork := e.ObjectNew.(type) {
|
||||
case *workv1alpha1.Work:
|
||||
statusesNew = newWork.Status
|
||||
newStatus = newWork.Status
|
||||
default:
|
||||
return false
|
||||
}
|
||||
|
||||
return !reflect.DeepEqual(statusesOld, statusesNew)
|
||||
return !reflect.DeepEqual(oldStatus, newStatus)
|
||||
},
|
||||
DeleteFunc: func(event.DeleteEvent) bool { return true },
|
||||
GenericFunc: func(event.GenericEvent) bool { return false },
|
||||
|
|
|
@ -52,6 +52,9 @@ func CreateOrUpdateWork(client client.Client, workMeta metav1.ObjectMeta, resour
|
|||
var operationResult controllerutil.OperationResult
|
||||
err = retry.RetryOnConflict(retry.DefaultRetry, func() (err 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.Labels = work.Labels
|
||||
runtimeObject.Annotations = work.Annotations
|
||||
|
|
Loading…
Reference in New Issue