From df6678eac57564f6359c4c2b72eab00b7f22cb03 Mon Sep 17 00:00:00 2001 From: lxtywypc Date: Mon, 13 Nov 2023 17:09:04 +0800 Subject: [PATCH] only update necessary part of binding status Signed-off-by: lxtywypc --- pkg/util/helper/workstatus.go | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/pkg/util/helper/workstatus.go b/pkg/util/helper/workstatus.go index b0d7fa83ed4e..3fed38634f42 100644 --- a/pkg/util/helper/workstatus.go +++ b/pkg/util/helper/workstatus.go @@ -52,19 +52,18 @@ func AggregateResourceBindingWorkStatus(c client.Client, binding *workv1alpha2.R fullyAppliedCondition := generateFullyAppliedCondition(binding.Spec, aggregatedStatuses) - currentBindingStatus := binding.Status.DeepCopy() - currentBindingStatus.AggregatedStatus = aggregatedStatuses err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) { + currentBindingStatus := binding.Status.DeepCopy() + + binding.Status.AggregatedStatus = aggregatedStatuses // set binding status with the newest condition - currentBindingStatus.Conditions = binding.Status.Conditions - meta.SetStatusCondition(¤tBindingStatus.Conditions, fullyAppliedCondition) - if reflect.DeepEqual(binding.Status, currentBindingStatus) { + meta.SetStatusCondition(&binding.Status.Conditions, fullyAppliedCondition) + if reflect.DeepEqual(binding.Status, *currentBindingStatus) { klog.V(4).Infof("New aggregatedStatuses are equal with old resourceBinding(%s/%s) AggregatedStatus, no update required.", binding.Namespace, binding.Name) return nil } - binding.Status = *currentBindingStatus updateErr := c.Status().Update(context.TODO(), binding) if updateErr == nil { return nil @@ -107,18 +106,17 @@ func AggregateClusterResourceBindingWorkStatus(c client.Client, binding *workv1a fullyAppliedCondition := generateFullyAppliedCondition(binding.Spec, aggregatedStatuses) - currentBindingStatus := binding.Status.DeepCopy() - currentBindingStatus.AggregatedStatus = aggregatedStatuses err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) { + currentBindingStatus := binding.Status.DeepCopy() + + binding.Status.AggregatedStatus = aggregatedStatuses // set binding status with the newest condition - currentBindingStatus.Conditions = binding.Status.Conditions - meta.SetStatusCondition(¤tBindingStatus.Conditions, fullyAppliedCondition) - if reflect.DeepEqual(binding.Status, currentBindingStatus) { + meta.SetStatusCondition(&binding.Status.Conditions, fullyAppliedCondition) + if reflect.DeepEqual(binding.Status, *currentBindingStatus) { klog.Infof("New aggregatedStatuses are equal with old clusterResourceBinding(%s) AggregatedStatus, no update required.", binding.Name) return nil } - binding.Status = *currentBindingStatus updateErr := c.Status().Update(context.TODO(), binding) if updateErr == nil { return nil