diff --git a/config/garm-derivative.yaml b/config/garm-derivative.yaml index 30d15e6..f095e53 100644 --- a/config/garm-derivative.yaml +++ b/config/garm-derivative.yaml @@ -81,7 +81,7 @@ patches: purpose: Bind authoritative repository identity before deleting a stale queued database duplicate for a GitHub in-progress job without releasing its running central admission intent; binding failures retain the row for retry, while terminal or absent jobs still release capacity exactly once. overlays: - path: third_party/garm/overlay/workers/scaleset/queue_intent.go - sha256: 0793ef4a19052849f265dfe40a06a8f3330bef053ea2fff84e080b269a85f7b7 + sha256: 18be93eabada82a284ecd50948af4e41ecd10b6eb59ae4f1e2ce1c1367e1618f purpose: Fsync-backed central queue admission where disabled scale sets cannot record or acquire work, sparse JobAssigned owns a bounded provisional token without refreshing its TTL, JobAvailable or the authoritative queued DB row binds repository identity, authoritative JobStarted rehydrates missing running ownership, and state_entered_at remains stable across same-phase lease refreshes. - path: third_party/garm/overlay/workers/scaleset/queue_intent_test.go sha256: 02449e9feaf09de10f225323053b1efbc75e810a0f7bba5113b9b27fb1856c65 diff --git a/scripts/build-garm-nddev.sh b/scripts/build-garm-nddev.sh index de69c86..c6da99b 100755 --- a/scripts/build-garm-nddev.sh +++ b/scripts/build-garm-nddev.sh @@ -92,7 +92,7 @@ readonly overlay_paths=( "third_party/garm/overlay/workers/provider/nddev_create_retry_test.go" ) readonly overlay_sha256s=( - "0793ef4a19052849f265dfe40a06a8f3330bef053ea2fff84e080b269a85f7b7" + "18be93eabada82a284ecd50948af4e41ecd10b6eb59ae4f1e2ce1c1367e1618f" "02449e9feaf09de10f225323053b1efbc75e810a0f7bba5113b9b27fb1856c65" "5f0166c596ed3946ba72e6dbca850af7573f514186acb62d39ee21ec0021ca1c" "9b6f69301d4442f459315e11e72748cf54c407098975fe4302bb69cb259ce495" diff --git a/third_party/garm/overlay/workers/scaleset/queue_intent.go b/third_party/garm/overlay/workers/scaleset/queue_intent.go index 85022fb..5c38cf1 100644 --- a/third_party/garm/overlay/workers/scaleset/queue_intent.go +++ b/third_party/garm/overlay/workers/scaleset/queue_intent.go @@ -670,7 +670,11 @@ func (c *queueIntentCoordinator) ObserveLifecycle(scaleSet params.ScaleSet, enti if !queueIntentCoreIdentityEqual(existing, intent) { return fmt.Errorf("duplicate assigned intent %q changed immutable identity", intent.Key) } - intent = existing + // Deliberately no write-back: the journal already holds `existing`, + // which carries mutable state this freshly rebuilt `intent` does not, + // so overwriting it would discard progress. This line used to read + // `intent = existing`, which looked load-bearing while being dead — + // `intent` is redeclared next iteration and nothing follows here. } else { journal.Intents[intent.Key] = intent ensureRepositoryState(journal, config, intent.Repository)