mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-10 16:05:58 +00:00
DuckDB runs in-process, so a Rust panic unwinding out of one of the cdylib's `extern "C"` entry points aborts the worker: every other job running there dies too, and the offending job is left `running = true` in `v2_job_queue` until the zombie sweep. The DECIMAL panic that motivated the 1.5.5 bump was one instance; the mechanism behind it was untouched. Catch the unwind at both entry points and return the panic message through the error channel the worker already parses, so it fails one job like any other error. This is not a blanket safety net: an abort raised inside DuckDB's own C++ never becomes a Rust unwind and still ends the process. Verified on a real worker with a temporary injected panic: three consecutive jobs each failed with the panic message, the worker process kept the same pid throughout, and no job was left in the queue. Co-Authored-By: Claude Opus 5 (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