Wake a parked build puller when its capacity changes, so a node raised from capacity 0 takes asks (issue 1887) #80

Merged
jschoubben merged 3 commits from fix/puller-wakes-on-capacity into main 2026-10-25 17:10:34 +00:00
Member

A build puller started at capacity 0 parked and never woke when its capacity was raised (g14's mesh-build-go on 2026-10-25, woken by hand with node-build-go.resume). The parked puller now follows its capacity's config value through the runtime's provision watch and wakes on its change event, with no timer; a fall stops new asks, a refused value means 0.

Issue: https://git.novox.be/novox/hq (issue 1887, note 15).

Merge FIRST, with a merge commit: mesh-catalog's fix/puller-wakes-on-capacity pins this head (a8fbabbf).

Tests: untagged suite and -race on go and go/buildstep pass; go vet with and without -tags integration clean. No net new tests (test budget): the capacity cases are subtests of TestPullAtCapacityZeroTakesNothing. Recovery mode: no try; the operator merges by hand.

Reviewed-by: reviewer-puller@shanks at a8fbabbfc3

A build puller started at capacity 0 parked and never woke when its capacity was raised (g14's mesh-build-go on 2026-10-25, woken by hand with node-build-go.resume). The parked puller now follows its capacity's config value through the runtime's provision watch and wakes on its change event, with no timer; a fall stops new asks, a refused value means 0. Issue: https://git.novox.be/novox/hq (issue 1887, note 15). Merge FIRST, with a merge commit: mesh-catalog's fix/puller-wakes-on-capacity pins this head (a8fbabbf). Tests: untagged suite and -race on go and go/buildstep pass; go vet with and without -tags integration clean. No net new tests (test budget): the capacity cases are subtests of TestPullAtCapacityZeroTakesNothing. Recovery mode: no try; the operator merges by hand. Reviewed-by: reviewer-puller@shanks at a8fbabbfc37369f9d1f6977c72e5523aff3d494c
mesh-tools added 3 commits 2026-10-25 16:46:55 +00:00
g14's Go builder sat idle at capacity 2 while delivery builds waited: a puller
with no room waited on its wake alone, which only a pause, a resume or a step's
end gives, and it read its capacity from the settings file only when woken.
The puller now follows the module's config value capacity through the
runtime's watch of what mesh-config resolved (stdio.WatchConfig), uses the
value it hands, and wakes on each change: no timer, no file watch, and no wait
for the node-engine to fill the file again. It says when it parks and when it
wakes, with its capacity.
A watch asked before Serve is refused, which would have left every build
module on its settings file again. stdio.Served closes when Serve has the
channel; WatchConfigServed waits on it, and Pull starts the watch beside its
loop.
Fold the puller-wake and Served tests into existing tests to stay within the test budget (issue 1887)
mesh/delivery merged: source.main moved to novox/mesh-sdk@4f4d5ca9c956
mesh/delivery-group group fix/puller-wakes-on-capacity merged: every member is merged
mesh/check pass a8fbabbfc373 on 4f4d5ca9c956 | unit 1102 run, 679 kept, 2 skipped | integration 1103 run, 721 kept, 2 skipped | over bound: unit, inte…
a8fbabbfc3
Author
Member

Delivery novox/mesh-sdk@a8fbabbfc373 — merged since 2026-10-25T17:10:35Z

Source — source.main moved to novox/mesh-sdk@4f4d5ca9c9. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/puller-wakes-on-capacity: novox/mesh-catalog@23c827e791, novox/mesh-sdk@a8fbabbfc3

  • composed together: pass — the checker's verdict at the members' heads (71a936cf38ad)

Transitions

  • 2026-10-25 16:46 (new) → proposed (announced): novox/mesh-sdk#80's head announced
  • 2026-10-25 16:56 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail
  • 2026-10-25 17:10 ready → merged (merged): on the trunk its modules follow: merged there

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-sdk@a8fbabbfc373` — **merged** since 2026-10-25T17:10:35Z **Source** — source.main moved to novox/mesh-sdk@4f4d5ca9c956. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/puller-wakes-on-capacity`: novox/mesh-catalog@23c827e7910c, novox/mesh-sdk@a8fbabbfc373 - composed together: pass — the checker's verdict at the members' heads (71a936cf38ad) **Transitions** - 2026-10-25 16:46 (new) → proposed (announced): novox/mesh-sdk#80's head announced - 2026-10-25 16:56 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail - 2026-10-25 17:10 ready → merged (merged): on the trunk its modules follow: merged there The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
jschoubben merged commit 4f4d5ca9c9 into main 2026-10-25 17:10:34 +00:00
jschoubben deleted branch fix/puller-wakes-on-capacity 2026-10-25 17:10:34 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-sdk#80