Ir al contenido

Red de seguridad de ejecución

Un sub-workflow o una iteración mal creados pueden entrar en bucle. En Floogos eso ya no cuelga la plataforma: seis defensas en capas detectan la recursión, ponen un límite y abortan la ejecución en segundos — sin reiniciar procesos ni afectar a nadie más.
6
defensas en capas contra bucles y recursión
0
reinicios de proceso para recuperar la cola
segundos
en abortar una recursión, no minutos ni “nunca”
10
niveles máx. de anidamiento (configurable)

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.

Las seis defensas

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.

Cómo detener una ejecución desbocada

Tres formas, de la más simple a la de contención

Botón «Detener»

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.

Solo se detiene

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.

Watchdog automático

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.

Ajustes disponibles

Todos con un valor por defecto seguro; se ajustan por variable de entorno

AjustePor defectoQué controla
SUBWORKFLOW_MAX_DEPTH10Niveles máximos de anidamiento de sub-workflows.
WORKFLOW_MAX_NODE_EXECUTIONS10000Tope 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_SEC3600Tiempo máximo por defecto (1 hora) cuando no hay otro definido.
WORKER_JOB_TIMEOUT_MS600000Timeout duro del worker (libera el puesto).
DLQ_SKIP_MANUALfalseSi se activa, los runs manuales no se reintentan al fallar.

Diseñá sin miedo a los bucles

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 →