warm pools: pods that never become ready count as idle forever, and a crashing warm image is recreated every 30 s
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 28/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- go, kubernetes
- Domain
- backend, infrastructure
Research direction
Start in internal/executor/warmpool_k8s.go around line 57, where only Succeeded and Failed are treated as terminal, then check how warmpool.go (452-468) counts idle pods and how internal/executor/warmpod.go creates them. Run TestAudit2PendingWarmPodCountsAsIdleForever to reproduce the stuck-Pending case. Done means a pod that never registers is not counted as idle and is replaced after a deadline, and repeated start failures back off per pool with a metric and event.
Written by the indexing model from the issue text.
Description
Found in the 2026-10-09 performance and reliability re-audit (R-28, confirmed by two reviewers, first half proven by a test). Only reachable with warm pools on.
Problem
internal/executor/warmpool_k8s.go:57treats only Succeeded and Failed as terminal, so a warm pod stuck Pending (unschedulable, ImagePullBackOff) or Terminating on a lost node counts as idle (warmpool.go:452-468).min_idlelooks satisfied, the pool and tenant caps are charged, and every task silently goes to a dedicated pod. Warm pods have noactiveDeadlineSecondsand no readiness signal (internal/executor/warmpod.go).TestAudit2PendingWarmPodCountsAsIdleForever: a 6 h old ImagePullBackOff pod withmin_idle 1triggers no new create.- A warm image that crashes on start is deleted and recreated on every 30 s reconcile, with no backoff.
Proposal
- Count a warm pod as idle only after its worker registered; a pod not registered within a deadline is deleted and replaced.
- Exponential backoff per pool after consecutive start failures, with a metric and an event naming the reason.
- Dominant language
- Go
- Stars
- 46
- Forks
- 1
- Avg merge
- 11h 20m
- Merged PRs (30d)
- 636
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dexadata/dexaflow
-
area/docs documentation priority/p3
Difficulty 1/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
area/ci enhancement priority/p3
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
area/auth enhancement priority/p2
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
All issues in dexadata/dexaflow
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
limitlessprojects/Go-Hybrid#3342 ·
Maintainers usually reply within 1 day
-
status/ready type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
buildpacks/pack#2733 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
kind/bug needs-priority needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
konveyor/tackle2-hub#1166 · 1 comment ·
Maintainers usually reply within 4 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
router-for-me/CLIProxyAPI#7209 ·
Maintainers usually reply within 1 day