Skip to content

fix(engine): self-heal enclave pool fill on transient failure (capped)#3155

Open
qu0b wants to merge 2 commits into
kurtosis-tech:mainfrom
qu0b:qu0b/fix-enclave-pool-self-heal
Open

fix(engine): self-heal enclave pool fill on transient failure (capped)#3155
qu0b wants to merge 2 commits into
kurtosis-tech:mainfrom
qu0b:qu0b/fix-enclave-pool-self-heal

Conversation

@qu0b

@qu0b qu0b commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

What

When an enclave-pool fill fails, re-queue it after a short backoff — up to a max retry count — instead of consuming the fill signal and dropping it.

Why

The pool's run loop reads fill signals off fillChan. On a fill error it only logged and breaked, so the signal was lost. If the initial fill (at engine startup) errored for a transient reason — e.g. the logs aggregator/collector aren't bootstrapped yet — the pool drained to empty and stayed empty permanently, forcing every enclave creation down the slow cold path.

How

  • On a non-context.Canceled fill error, re-queue the same fill after fillRetryBackoff (5s) via a non-blocking send, up to maxFillRetries (5).
  • After the cap is hit, log and give up until the next fill signal (so a persistently broken pool doesn't retry forever).
  • A successful fill resets the retry budget.

On a failed fill the signal was consumed and dropped, so a transient error at
startup (e.g. logs components not bootstrapped yet) could drain the pool to empty
permanently. Re-queue the fill after a short backoff, up to maxFillRetries, then
give up until the next fill signal; a successful fill resets the budget.
@qu0b qu0b force-pushed the qu0b/fix-enclave-pool-self-heal branch from 02613c9 to 59d4546 Compare June 15, 2026 18:03
@qu0b qu0b changed the title fix(engine): self-heal enclave pool fill on transient failure fix(engine): self-heal enclave pool fill on transient failure (capped) Jun 15, 2026
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