From e0099af2d6ab494a5cb4c90e416410445eb4dcce Mon Sep 17 00:00:00 2001 From: David Date: Wed, 3 Dec 2025 09:22:21 -0500 Subject: [PATCH] operator: add retry for MachineConfiguration calls --- pkg/operator/sync.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/operator/sync.go b/pkg/operator/sync.go index 7fb9dac3c4..de70726d9b 100644 --- a/pkg/operator/sync.go +++ b/pkg/operator/sync.go @@ -2321,9 +2321,19 @@ func (optr *Operator) syncMachineConfiguration(_ *renderConfig, _ *configv1.Clus } } mcop.Status = *newMachineConfigurationStatus - _, err = optr.mcopClient.OperatorV1().MachineConfigurations().UpdateStatus(context.TODO(), mcop, metav1.UpdateOptions{}) - if err != nil { + + // Handle resoucce conflicts since the boot image controller may update conditions at startup + if err := retry.RetryOnConflict(retry.DefaultBackoff, func() error { + // Refetch via direct API call + mcop, err = optr.mcopClient.OperatorV1().MachineConfigurations().Get(context.TODO(), ctrlcommon.MCOOperatorKnobsObjectName, metav1.GetOptions{}) + if err != nil { + return err + } + mcop.Status = *newMachineConfigurationStatus + _, err = optr.mcopClient.OperatorV1().MachineConfigurations().UpdateStatus(context.TODO(), mcop, metav1.UpdateOptions{}) return err + }); err != nil { + return fmt.Errorf("error updating MachineConfiguration status: %v", err) } }