Skip to content

Commit

Permalink
Merge pull request #4236 from jwcesign/automated-cherry-pick-of-#4226…
Browse files Browse the repository at this point in the history
…-upstream-release-1.5

Automated cherry pick of #4226: only update necessary part of binding status
  • Loading branch information
karmada-bot authored Nov 14, 2023
2 parents b981ce9 + df6678e commit 00b0f54
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions pkg/util/helper/workstatus.go
Original file line number Diff line number Diff line change
Expand Up @@ -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(&currentBindingStatus.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
Expand Down Expand Up @@ -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(&currentBindingStatus.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
Expand Down

0 comments on commit 00b0f54

Please sign in to comment.