[Bug]: A template without resource limits is admitted with no resource check, and a worker without limits registers the node's allocatable as its capacity
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- go, kubernetes
Línea de trabajo
Start by tracing template create/derive validation, WorkerPool worker-limit handling, scheduler admission checks, and worker capacity registration; the issue does not name specific files or tests. Review the API guide alongside those entry points to understand the documented per-worker budget. Done means missing limits are handled consistently, registered capacity is logged, and the API guide explains the behavior.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happened?
Two defaults combine so that no admission control runs, with nothing reporting it.
| Default | Effect |
|---|---|
A template with empty resources.limits is accepted (older templates have it; derived templates inherit it) |
the scheduler skips the resource check for actors that declare no size; the only bound left is the worker's --max-actors, default 1000 |
| A WorkerPool without limits on the worker container | the worker reads its capacity through the downward API, which returns the node's allocatable; every worker on the node registers the whole node |
Expected Behavior
A template without limits is refused at create and derive time, or receives a documented default. A WorkerPool without limits is refused, or the controller sets worker limits from the pool spec. The registered capacity is logged at worker registration. The API guide says what happens when either is missing.
Steps to Reproduce
My cluster ran 890 and then 512 concurrent actors on 320 workers for a week with admission never engaging. Each of the eight workers on an n2-standard-8 had registered 7.5 CPU, 28.9 GiB and 1,000 actors as its own capacity. The API guide describes a per-worker budget that declared sizes are booked against, and that is what I assumed was happening.
Suggestion
- Refuse a template without limits, or apply a documented default.
- Refuse a WorkerPool without worker limits, or derive them.
- Log the capacity a worker registers.
Sandbox Runtime
gVisor (runsc)
Agent Substrate Version / Commit SHA
0fdb67b5
Kubernetes Version & Environment
GKE 1.36.4-gke.2046002, Container-Optimized OS, us-central1
Host OS & Architecture
Linux x86_64
Relevant Logs and Diagnostic Output
# a derived template
resources:
limits: {}
# a worker on an n2-standard-8 (8 workers on the node, each reports this)
status:
capacity:
actors: 1000
resources:
limits:
- name: cpu
quantity: 7510m
- name: memory
quantity: 28927020Ki
state: WORKER_STATE_ACTIVE
Additional Context
Setup: two GKE worker pools. Pool A: 40 x n2-standard-8 (8 vCPU, 32 GiB, Intel Cascade Lake), 192 GB pd-balanced boot disk, 320 worker pods (8 per node). Pool B: 783 x e2-standard-8 (8 vCPU, 32 GiB, AMD Rome), 500 GB pd-balanced boot disk, 2,000 worker pods. ateapi at 2 to 12 replicas; Postgres on one n2-standard-16 with pd-ssd. Images: SWE-bench Verified (445 images, about 1.1 GB compressed median, 13 layers), R2E-Gym-V1 (8,101 images, 0.57 GB compressed median, 1.9 GB max, 14 layers, almost no layer sharing between images), and a 36,871-image SWE-RL set (0.5 to 1.4 GB compressed median per subset, up to 13 GB squashed single-layer images); unpacked size is 2 to 2.5 times compressed. All images pulled from an Artifact Registry repository in the same region with plain containerd pulls. Load: create N actors from per-image ActorTemplates with golden snapshots enabled, send one command each, delete; or keep a fleet and suspend/resume it per step. Observed on 0fdb67b5; the code involved is unchanged on main at a508f8fe.
Confirmation
- I have searched existing issues and verified that this is not a duplicate.
- I have verified that this issue occurs on the latest commit on
main.
- Lenguaje dominante
- Go
- Estrellas
- 5.9k
- Forks
- 637
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 528
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de agent-substrate/substrate
-
Clean up the ko retry testsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea/dev-infra area/reliability area/tests kind/cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
agent-substrate/substrate#3461 ·
Los mantenedores suelen responder en 1 día
-
egress: drop the empty-provider check in providerCredentialPosiblemente ocupada @cloudonly la tomó hace 3 días. Abiertoarea/network kind/cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
agent-substrate/substrate#3428 ·
Los mantenedores suelen responder en 1 día
-
kubectl-ate create actor-template -f <file> fails with useless errorPosiblemente ocupada @cloudonly la tomó hace 5 días. Abiertoarea/cli kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
agent-substrate/substrate#3406 ·
Los mantenedores suelen responder en 1 día
-
k8s-credential-provider manifest is missing ate-otel-config envFrom, failing OTLP metric exports to [::1]:4317 / 127.0.0.1:4317 every 60sPosiblemente ocupada @ericcurtin la tomó hace 6 días. Abiertoarea/dev-infra area/observability area/security kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
agent-substrate/substrate#3282 ·
Los mantenedores suelen responder en 1 día
-
filecachegc.runPass suppresses eviction logs when FreedBytes < target and consecutiveShortfalls > 3Posiblemente ocupada @ericcurtin la tomó hace 5 días. Abiertoarea/node area/observability area/storage kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
agent-substrate/substrate#3281 ·
Los mantenedores suelen responder en 1 día
Todos los issues de agent-substrate/substrate
Issues similares
-
agent-butler-finding chore
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
jordansmall/spindrift#6318 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Eyevinn/moqlivemock#166 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
JakeChampion/lang#14091 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
hyperledger/fabric-x-orderer#1409 ·
Los mantenedores suelen responder en 3 días
-
get actions doesn't show the approval flag, and describe action shows it unformattedPosiblemente ocupada @kenokech la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día