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.
|
// 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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 },
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue