Ir al contenido

Cola de reintentos (DLQ)

Cuando un workflow falla durante su ejecución (un nodo lanza un error, una API externa no responde, un dato viene malformado…), Floogos no lo descarta sin más: lo mueve a una cola de reintentos, también llamada DLQ (Dead Letter Queue).

Desde ahí, el sistema vuelve a intentar la ejecución de forma automática, con esperas crecientes entre intento e intento. Así, un fallo pasajero (una red caída un segundo, un servicio que tardó de más) se recupera solo, sin que tengas que hacer nada.

La Cola de reintentos te da visibilidad de todo esto: qué workflows están fallando, en qué nodo, con qué error, cuántos intentos llevan y cuándo será el próximo — y te deja reintentar o descartar manualmente cuando lo necesites.

El recorrido de un workflow que falla es siempre el mismo:

  1. Falla la ejecución. El motor detecta el error y, en vez de perder el trabajo, registra el job en la cola de reintentos con estado pending.
  2. Espera con backoff. El sistema programa el próximo intento con una espera que crece en cada intento (backoff exponencial), para no machacar un servicio que quizá está caído.
  3. Reintenta. Al llegar la hora, el job se reencola y se vuelve a ejecutar.
    • Si funciona, pasa a succeeded y termina ahí.
    • Si vuelve a fallar, suma un intento y vuelve a esperar.
  4. Se agota. Tras el último intento sin éxito, el job queda en discarded: deja de reintentarse, pero no se borra — permanece en el panel para que puedas revisarlo o relanzarlo a mano.

Por defecto son 4 reintentos con estas esperas:

IntentoEspera antes de reintentar
1.º1 minuto
2.º5 minutos
3.º15 minutos
4.º (último)1 hora

Si tras el 4.º intento sigue fallando, el job se marca como descartado. El número de reintentos es configurable por la instalación (variable DLQ_MAX_RETRIES); on-premise puede ajustarlo.

Cada job de la cola tiene uno de estos estados:

EstadoQué significa
Pendiente (pending)Falló y está esperando su próximo reintento. next_retry_at indica cuándo.
Reintentando (retrying)Se está ejecutando ahora mismo un reintento automático.
Recuperando (replaying)Estás reintentándolo manualmente desde el panel (acción “Reintentar”).
Descartado (discarded)Agotó todos los reintentos (o lo descartaste a mano). Ya no se reintenta, pero queda visible para revisión o relanzamiento manual.
Recuperado (succeeded)Un reintento terminó bien. El workflow se recuperó solo; queda en el historial de la cola como resuelto.

El flujo normal es: pending → retrying → (succeeded o de nuevo pending) → … → discarded si se agotan los intentos.

Entrá desde el menú lateral, en Reintentos (grupo Analítica). La pantalla tiene tres partes:

Arriba, un vistazo rápido del estado de la cola:

  • Pendientes — jobs esperando su próximo reintento.
  • Reintentando — jobs ejecutándose en este momento.
  • Descartados — jobs que agotaron los reintentos.
  • Recuperados — jobs que un reintento resolvió con éxito.
  • Últimas 24 h — total de jobs que entraron a la cola en el último día (para ver si hay un pico de fallos).

Justo debajo, botones para filtrar la tabla por estado: Todos, Pendientes, Reintentando, Descartados o Recuperados. Útil para, por ejemplo, ver solo lo que está fallando ahora mismo.

El detalle de cada job en la cola:

ColumnaContenido
WorkflowNombre e id del workflow que falló.
NodoEl nodo concreto donde se produjo el error (ej. editFields_9).
ErrorEl mensaje de error. Pasá el cursor por encima para ver el texto completo.
IntentosReintentos consumidos sobre el máximo (ej. 2/4).
EstadoEl estado actual (ver tabla de estados arriba).
Próx. reintentoCuándo se ejecutará el siguiente intento automático.
CreadoCuándo entró el job a la cola.
AccionesReintentar o descartar (ver abajo).

El botón de reintentar (↻) en la fila reencola ese job de inmediato, sin esperar a su next_retry_at. Úsalo cuando ya corregiste la causa del fallo (por ejemplo, arreglaste una credencial o un dato) y querés relanzar sin esperar.

  • No está disponible para jobs ya recuperados (no hace falta).

El botón de descartar (🗑) marca el job como discarded: detiene los reintentos de ese job. Úsalo cuando el fallo no se va a resolver reintentando (un workflow mal configurado, datos que no volverán a llegar) y solo querés que deje de reintentarse.

  • El job no se borra: queda como descartado para que puedas revisarlo.

El botón Reintentar pendientes (arriba a la derecha) reencola todos los jobs en estado pendiente de una vez (hasta 50). Útil tras resolver una caída general (por ejemplo, un servicio externo que ya volvió) y querés relanzar todo lo que quedó esperando.

El botón de refresco (⟳) vuelve a cargar las tarjetas y la tabla con el estado más reciente de la cola.

  • Un pico en “Últimas 24 h” suele indicar un servicio externo caído o un cambio que rompió un workflow. Filtrá por Pendientes para ver qué está fallando.
  • Antes de reintentar en masa, asegurate de haber corregido la causa. Reintentar sin arreglar el problema solo repite el fallo y gasta recursos.
  • Un mismo workflow y nodo repetidos en la lista (ej. siempre editFields_9) apunta a un error de configuración o de datos, no a un fallo pasajero: revisá ese nodo en el editor.
  • Descartá lo que sabés que no se va a recuperar, para mantener la cola limpia y que las alertas reflejen problemas reales.