···197197)
198198199199// Use our custom version of tangled until its upstreamed
200200-replace tangled.org/core => tangled.org/evan.jarrett.net/core v0.0.0-20251108052645-99c60f368227
200200+replace tangled.org/core => tangled.org/evan.jarrett.net/core v1.9.1-alpha.0.20251109064205-7149c5d466a4
···165165func (r *SpindleSetReconciler) updateStatus(ctx context.Context, spindleSet *loomv1alpha1.SpindleSet) error {
166166 logger := log.FromContext(ctx)
167167168168+ // Re-fetch the SpindleSet to get the latest version before updating status
169169+ // This avoids optimistic concurrency conflicts when the object was modified
170170+ // by another reconciliation loop (e.g., triggered by Job creation/updates)
171171+ latestSpindleSet := &loomv1alpha1.SpindleSet{}
172172+ if err := r.Get(ctx, client.ObjectKeyFromObject(spindleSet), latestSpindleSet); err != nil {
173173+ return fmt.Errorf("failed to fetch latest SpindleSet: %w", err)
174174+ }
175175+ // Use the latest version for all subsequent operations
176176+ spindleSet = latestSpindleSet
177177+168178 // List all Jobs owned by this SpindleSet
169179 jobList := &batchv1.JobList{}
170180 if err := r.List(ctx, jobList, client.InNamespace(spindleSet.Namespace), client.MatchingLabels{
+3-14
internal/engine/kubernetes_engine.go
···445445 continue
446446 }
447447448448- step := workflow.Steps[event.StepID]
449449-450448 switch event.Kind {
451449 case "control":
452452- // Step start/end events
453453- var status models.StepStatus
454454- if event.Event == "start" {
455455- status = models.StepStatusStart
456456- } else if event.Event == "end" {
457457- status = models.StepStatusEnd
458458- } else {
459459- continue // Unknown control event
460460- }
461461-462462- controlWriter := wfLogger.ControlWriter(event.StepID, step, status)
463463- controlWriter.Write([]byte{})
450450+ // Control events (start/end) are already written by the spindle engine in engine.go
451451+ // We don't need to write them again here to avoid duplicates
452452+ continue
464453465454 case "data":
466455 // Log output from step