1 · Anti-recursión
Si un workflow termina llamándose a sí mismo (A → B → A), Floogos lo detecta en ejecución y aborta con un mensaje claro que muestra la cadena que causó el ciclo. No hay descenso infinito.
El problema que resuelve. Estás desarrollando un flujo y, al probarlo, un Sub Workflow que se llama a sí mismo (o una iteración mal armada) entra en bucle infinito. Sin defensas, esa ejecución no cede el control: ocupa un puesto de trabajo (slot) para siempre y, con varios bucles, la cola se congela. La red de seguridad hace que nunca llegues a ese punto.
Actúan en capas: si una no llega, la siguiente corta
1 · Anti-recursión
Si un workflow termina llamándose a sí mismo (A → B → A), Floogos lo detecta en ejecución y aborta con un mensaje claro que muestra la cadena que causó el ciclo. No hay descenso infinito.
2 · Tope de profundidad
El anidamiento de sub-workflows está acotado (10 niveles por defecto). Pasado ese límite, la ejecución se detiene con un error explícito en vez de crecer sin control.
3 · Cancelación por árbol
El botón Detener ahora frena también a los hijos. Cancelar la ejecución que ves en el editor corta el árbol completo de sub-workflows, no solo el nivel superior.
4 · Tope de nodos
Un contador de nodos ejecutados atrapa cadenas cíclicas (un nodo que apunta hacia atrás) aunque no se agote el tiempo. Al superar el tope, la ejecución se marca como fallida.
5 · Deadline de ejecución
Cada ejecución tiene un tiempo máximo efectivo. Al vencer, el motor corta de forma limpia entre nodos y deja el error registrado para diagnóstico.
6 · Watchdog del worker
La red de contención final: si un nodo nunca cede el control, el worker libera su puesto por timeout. La cola sigue fluyendo aunque una ejecución quede pegada — sin reiniciar procesos.
Tres formas, de la más simple a la de contención
En el editor, durante una ejecución, el control de parar cancela el árbol completo. El motor corta en el siguiente punto seguro entre nodos y marca la instancia como cancelada.
Recursión, tope de profundidad, tope de nodos o deadline: cualquiera de las cuatro aborta la ejecución sola, sin que tengas que intervenir, y deja el motivo en la traza.
Si nada de lo anterior alcanza (un nodo que no cede el control), el worker libera su puesto por timeout. No hay que tocar la infraestructura: la cola no se congela.
Todos con un valor por defecto seguro; se ajustan por variable de entorno
| Ajuste | Por defecto | Qué controla |
|---|---|---|
SUBWORKFLOW_MAX_DEPTH | 10 | Niveles máximos de anidamiento de sub-workflows. |
WORKFLOW_MAX_NODE_EXECUTIONS | 10000 | Tope de nodos ejecutados por ejecución (atrapa ciclos). |
WORKFLOW_MAX_EXECUTION_SEC | — | Tiempo máximo de una ejecución para todos los flujos. 0 = sin límite. |
WORKFLOW_DEFAULT_EXECUTION_SEC | 3600 | Tiempo máximo por defecto (1 hora) cuando no hay otro definido. |
WORKER_JOB_TIMEOUT_MS | 600000 | Timeout duro del worker (libera el puesto). |
DLQ_SKIP_MANUAL | false | Si se activa, los runs manuales no se reintentan al fallar. |
La red de seguridad es el respaldo, no el plan. La mejor ejecución es la que nunca se desboca: aprendé a encadenar sub-workflows sin crear ciclos.
Buenas prácticas de Sub Workflow →