Trabajos

Los trabajos durables de las tres etapas: estados, progreso por etapa, posición en la cola, turnos y límites, cancelación, reintentos, registros y códigos de fallo.

  • Disponibilidad: Planificado
  • Evidencia: Leído del código fuente
  • Referencia

Operaciones

Operación Solicitud Capacidad Reintento
jobs.list GET /v1/applications/{application}/jobs?state= application.read
jobs.read GET /v1/jobs/{job} application.read
jobs.cancel POST /v1/jobs/{job}/cancel release.prepare natural
jobs.logs GET /v1/jobs/{job}/logs application.read

Un trabajo es trabajo durable que continúa sin una pestaña abierta en el navegador. Leer un trabajo nunca inicia, reanuda ni programa nada.

El trabajo

Miembro Significado
kind registration ejecuta la etapa resolve. preparation ejecuta prepare, analyze, generate y validate.
state queued, running, waiting_turn, succeeded, failed, cancelled, limit_exceeded
stage La etapa en curso, o aquella en la que terminó el trabajo
stages Una entrada por etapa: state (pending, running, succeeded, failed, skipped, cancelled, limit_exceeded), started, ended, done, total y hits
plan free o premium: la política de planificación con la que se ejecuta el trabajo, fijada cuando fue admitido
queue Presente mientras el trabajo espera: position y los turns ya usados
registration, graph, release Aquello sobre lo que trabaja
usage Milisegundos medidos hasta ahora por categoría: wait, download, analysis, build, diagnostics
failure Obligatorio cuando el estado es failed o limit_exceeded

hits cuenta las unidades que una salida compatible autorizada satisfizo sin ejecución nueva. Un acierto de caché no suma tiempo de compilación ni genera cargo.

Cómo se planifica el trabajo gratuito

Las organizaciones gratuitas comparten una cola sin SLA. El planificador le da a cada aplicación un turno corto, por rotación. Al final de un turno, el trabajo deja de iniciar módulos nuevos, permite que el módulo en curso termine dentro de un período de gracia y vuelve a la cola como waiting_turn. Al llegar el plazo máximo, el worker aislado se termina de verdad; las salidas que ya estaban verificadas se conservan.

Los trabajos premium ejecutan las mismas tareas sin el turno corto. Conservan tiempos límite de seguridad y límites de crédito.

Cuando un módulo no cabe

La compilación no se puede pausar y reanudar. Un módulo que no puede terminar dentro del presupuesto de ejecución permitido termina en limit_exceeded, con el código de fallo LIMIT_EXCEEDED, y el trabajo informa que necesita un plan ampliado. Nunca se reintenta automáticamente, porque repetirlo fallaría de la misma manera.

Reintentos

Los fallos transitorios se reintentan con espera exponencial, una cantidad acotada de veces. Los fallos deterministas y los resultados limit_exceeded no se reintentan. Cada intento se registra una sola vez, de modo que una entrega duplicada o tardía del mismo trabajo no puede publicar un resultado dos veces ni cobrar dos veces.

Cancelar

jobs.cancel separa este trabajo de sus unidades de trabajo. Una unidad que otros trabajos autorizados todavía consumen sigue ejecutándose, y las salidas completas verificadas se conservan. Cancelar un trabajo que ya terminó responde su estado final, sin cambios.

Registros

jobs.logs pagina las líneas de registro guardadas: sequence, time, level (debug, info, warning, error), stage y message. Los mensajes están saneados: nunca aparecen credenciales ni datos de otras organizaciones. Para ver el progreso en vivo usa los eventos en tiempo real.

Códigos de fallo

Un failure tiene un code, un message y, opcionalmente, el stage, el module y los diagnostics del compilador con file y line. Estos códigos viajan dentro de trabajos, releases, elementos del inventario y eventos; no son respuestas HTTP.

Código Significado
RESOLUTION_FAILED No se pudo fijar el grafo: una versión que no existe, restricciones en conflicto o un peer sin satisfacer
INTEGRITY_MISMATCH Un archivo descargado no coincide con la integridad fijada
FETCH_FAILED No se pudo descargar un paquete fijado
ANALYSIS_FAILED No se pudo calcular el inventario alcanzable desde las entradas
DYNAMIC_IMPORT_UNKNOWN Un import dinámico sin declarar impide completar el cierre
BUILD_FAILED Un módulo no compiló; los errores esenciales de compilación siempre se informan
CLOSURE_INCOMPLETE Una salida requerida del cierre de entrega falta, falló o no se puede obtener
CANCELLED El trabajo se canceló antes de completarse
LIMIT_EXCEEDED El trabajo no cabe en su presupuesto de ejecución o de preparación
QUOTA_EXCEEDED Se alcanzó una cuota al descargar o almacenar
CREDIT_INSUFFICIENT El crédito se agotó antes de que el trabajo pudiera admitirse
BUDGET_EXHAUSTED El presupuesto global de admisión no admitió el trabajo
UNSUPPORTED_INPUT Esta versión no puede procesar una entrada
UPSTREAM_UNAVAILABLE Un registro o proveedor no estuvo disponible para una entrada que no estaba en caché
INTERNAL Fallo inesperado