@@ -168,21 +168,27 @@ func (u *UsageTracker) DeletionEvent(ctx context.Context, project string, worksp
168168 return fmt .Errorf ("error getting object key: %w" , err )
169169 }
170170
171- var mcpUsage = v1.MCPUsage {
172- ObjectMeta : metav1.ObjectMeta {
173- Name : objectKey .Name ,
174- Namespace : objectKey .Namespace ,
175- },
176- Spec : v1.MCPUsageSpec {
177- MCPDeletedAt : metav1 .NewTime (time .Now ().UTC ()),
178- },
179- }
180- err = u .client .Patch (ctx , & mcpUsage , client .Merge )
181- if k8serrors .IsNotFound (err ) {
171+ deletedAt := metav1 .NewTime (time .Now ().UTC ())
172+ err = retry .RetryOnConflict (retry .DefaultRetry , func () error {
173+ var mcpUsage v1.MCPUsage
174+ // Re-fetch the latest version to avoid update conflicts
175+ err := u .client .Get (ctx , objectKey , & mcpUsage )
176+ if err != nil {
177+ return fmt .Errorf ("error getting MCPUsage resource during retry: %w" , err )
178+ }
179+ mcpUsage .Spec .MCPDeletedAt = deletedAt
180+ err = u .client .Update (ctx , & mcpUsage )
181+ if err != nil {
182+ if k8serrors .IsConflict (err ) {
183+ return err // trigger retry
184+ }
185+ return fmt .Errorf ("error when setting deletion timestamp on MCPUsage element: %w" , err )
186+ }
182187 return nil
183- }
188+ })
189+
184190 if err != nil {
185- return fmt . Errorf ( "error when setting deletion timestamp on MCPUsage element: %w" , err )
191+ return err
186192 }
187193
188194 return nil
0 commit comments