Buscar en la documentación

Jobs fallidos

Qué pasa cuando un trabajo de la cola falla, cómo se ve sin exponer su contenido y cómo se reintenta o se descarta.

Módulo system1 min de lecturaVer en GitHub

Los correos, los avisos de tiempo real y las notificaciones van por la cola (Redis). Si un trabajo falla todas sus veces, queda en failed_jobs y se registra un evento del sistema. Desde el panel de salud, el Super admin los ve y decide si reintentarlos o descartarlos.

Diagrama4 carriles · 8 pasos · 2 salidas de error
ReintentarDescartarSíNoSíNoUn job agota susintentos1Queda enfailed_jobs y dejaun evento2Abre "Jobsfallidos" desdeSalud3¿Reintenta odescarta?4Con código,¿existen loselegidos?5Responde 404 o409Vuelven a la cola yse registra cuántos6Con código,¿existe eljob?7Responde 404Lo borra y registracuál era8
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. WorkerUn job agota sus intentos
  2. Base de datosQueda en failed_jobs y deja un evento

    Evento JobFailed agrupado por huella en system_events. El contenido del job (que puede llevar datos personales) se queda en la base, cifrado si es un correo.

  3. Super adminAbre "Jobs fallidos" desde Salud

    Hasta 50 recientes, sin su contenido: nombre, cola, fecha y la primera línea del error. Basta system.health.view para verlos.

  4. Super admin¿Reintenta o descarta?
  5. APICon código, ¿existen los elegidos?

    Uno, varios o todos (POST /system/failed-jobs/retry), con las protecciones de las acciones de sistema. Si otra persona ya los atendió, responde 404.

  6. WorkerVuelven a la cola y se registra cuántos

    system_jobs_retried con el número en admin_actions.

  7. APICon código, ¿existe el job?

    DELETE /system/failed-jobs/{id}.

  8. Base de datosLo borra y registra cuál era

    system_job_discarded con el nombre y la cola del job.

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
FAILED_JOB_NOT_FOUND404Otra persona ya lo reintentó o lo descartóEse job ya no está en la lista: otra persona lo reintentó o lo descartó. Actualiza la lista.
NO_FAILED_JOBS409“Reintentar todos” sin jobs fallidosNo hay jobs fallidos para reintentar.
REAUTHENTICATION_LOCKED423Cinco códigos incorrectos en un minutoEscribiste varios códigos incorrectos seguidos. Espera {wait} y vuelve a intentarlo.

Dónde está en el código