@@ -132,6 +132,12 @@ func (r *ManagedResourceControllerManager) Reconcile(ctx context.Context, req re
132132 r .recordErr (ctx , fmt .Errorf ("failed to ensure instance controller: %w" , err ), string (DependencyConfigurationError ), managedResource , req ),
133133 )
134134 }
135+ if ! ic .reconciler .started .Load () && managedResource .Status .Status != string (WaitingForCacheSync ) {
136+ managedResource .Status .Status = string (WaitingForCacheSync )
137+ if err := r .Status ().Update (ctx , & managedResource ); err != nil {
138+ return ctrl.Result {}, fmt .Errorf ("failed to update status of managed resource %q: %w" , req .NamespacedName , err )
139+ }
140+ }
135141 if err := ic .StartErr (); err != nil {
136142 return ctrl.Result {}, multierr .Combine (
137143 fmt .Errorf ("failed to start instance controller for managed resource %q: %w" , req .NamespacedName , err ),
@@ -156,14 +162,13 @@ func (r *ManagedResourceControllerManager) recordErr(ctx context.Context, err er
156162 }
157163
158164 r .Recorder .Eventf (& managedResource , nil , "Warning" , errType , "Reconcile" , "%s: %s" , errType , err .Error ())
159- var statusUpdateErr error
160165 if managedResource .Status .Status != errType {
161166 managedResource .Status .Status = errType
162167 if err := r .Status ().Update (ctx , & managedResource ); err != nil {
163- statusUpdateErr = fmt .Errorf ("failed to update status of managed resource %q: %w" , req .NamespacedName , err )
168+ return fmt .Errorf ("failed to update status of managed resource %q: %w" , req .NamespacedName , err )
164169 }
165170 }
166- return statusUpdateErr
171+ return nil
167172}
168173
169174func (r * ManagedResourceControllerManager ) ensureInstanceControllerFor (ctx context.Context , mr espejotev1alpha1.ManagedResource ) (* resourceController , error ) {
@@ -199,13 +204,6 @@ func (r *ManagedResourceControllerManager) ensureInstanceControllerFor(ctx conte
199204 delete (r .controllers , mrKey )
200205 }
201206
202- if mr .Status .Status != string (WaitingForCacheSync ) {
203- mr .Status .Status = string (WaitingForCacheSync )
204- if err := r .Status ().Update (ctx , & mr ); err != nil {
205- return nil , fmt .Errorf ("failed to update status of managed resource %q: %w" , mrKey , err )
206- }
207- }
208-
209207 instanceCtrlCtx , instanceCtrlCancel := context .WithCancel (r .ControllerLifetimeCtx )
210208 reconciler := & ManagedResourceReconciler {
211209 For : mrKey ,
0 commit comments