Flows waiting for a suspended child (e.g. approval step) have running=true but ping=NULL by design. The zombie flow handler required ping IS NOT NULL, so these flows were invisible to detection and could stay in the queue indefinitely, blocking retention cleanup of their completed children. Two fixes: 1. monitor.rs: Add detection for root flows with NULL pings older than the retention period. These are cancelled as zombies with a critical error. 2. worker_flow.rs: Cap suspend_until at the retention period to prevent flows from being parked longer than retention allows. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Windmill Backend
This folder holds all backend components, the src/ folder only contains files used to build the "root" binary.
Components
| name | description |
|---|---|
| windmill-api | The API server, exposing functionality to other components and the frontend |
| windmill-audit | Contains audit functionality, allowing different components to record important actions |
| windmill-common | Common code shared by all crates |
| windmill-queue | Contains job & flow queuing functionality, commonly written to by the API server and read from by workers |
| windmill-worker | The worker. Used to process and execute flows & jobs. |
| parsers | Contains code to parse signatures in different langauges. |
Compile sqlx for offline ci
cargo sqlx prepare --workspace -- --bin windmill --features enterprise