Skip to content

fix: capacity-burst timeout pages and queue slow-burn repeats - #404

Merged
rldyourmnd merged 5 commits into
mainfrom
fix/capacity-preempt-timeout-class
Sep 6, 2026
Merged

fix: capacity-burst timeout pages and queue slow-burn repeats#404
rldyourmnd merged 5 commits into
mainfrom
fix/capacity-preempt-timeout-class

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

Why

Live Drakkars tickets from 2026-09-05/06 were a real memory ceiling on the four members (queued waits 9–18 minutes, assigned age under the stall page). Two defects made that afternoon worse than the contract:

  1. Warm-preemption context deadline exceeded was classed as timeout, so provider_retry_error_persistent paged and three attempts can open a 24-hour circuit. The same create refused for insufficient-memory is a ticket.
  2. Queue slow-burn tickets use the default 15-minute silence, so one burst re-announced itself all afternoon while no job was stuck.

Stall pages (lifecycle_queued_delivery_stall, lifecycle_assigned_stall, real identity/provider/timeout retries) are unchanged.

What

  • Preempted warm deletes use an independent stop-plus-delete budget (context.WithoutCancel).
  • The returned error names insufficient-memory so the live GARM classifier records capacity without a GARM rebuild.
  • Overlay nddevProviderErrorClass classifies preemption/delete-wait/busy-start as capacity; bare deadlines still page.
  • queue_wait_slow_burn and queue_started_wait_slow_burn repeat every four hours.
  • Provider derivative v0.1.5-nddev.124 stamped from 28bea87a (two matching rebuilds).

Verify

make verify

Targeted: go test ./internal/garmproviderincus/provider/ ./internal/observabilityrules/ ./internal/providerrelease/ ./internal/fleetcontract/

Deploy (estate, after merge)

  1. Pin this merge as the github-actions gitlink.
  2. Advance host provider_version and provider-incus.toml to v0.1.5-nddev.124.
  3. deploy/github-actions/scripts/rollout-provider.sh <worktree> v0.1.5-nddev.124
  4. Reconcile OpenObserve alerts from the new config/observability-rules.yaml.
  5. GARM rebuild is not required for the page to stop; overlay classification ships on the next GARM derivative.

A create that reclaimed a warm slot and hit context deadline exceeded
was classed as timeout, which pages and can open a 24-hour circuit.
Name the refusal insufficient-memory, delete with an independent
stop-plus-delete budget, and classify the same phrases in the GARM
overlay so a rebuild agrees.
Fifteen-minute silence re-announced one memory-bound afternoon six
times while assigned age stayed under the page and queued wait stayed
under thirty minutes. Stall pages still evaluate on their own cadence.
Record that warm-preemption deadlines are capacity, and that queue
slow-burn tickets repeat once per burst.
Stamp the derivative from the warm-preemption capacity source commit
and advance the example platform pins with it.
Stamp overlay digests and the rebuilt GARM binary so warm-preemption
deadlines class as capacity. Classify "timed out" with timeout, not
the default provider class.
@rldyourmnd
rldyourmnd enabled auto-merge September 6, 2026 00:53
@rldyourmnd
rldyourmnd merged commit 6c8c15e into main Sep 6, 2026
10 checks passed
@rldyourmnd
rldyourmnd deleted the fix/capacity-preempt-timeout-class branch September 6, 2026 00:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant