Files
windmill/backend
Ruben FiszelandClaude Opus 5 ff7fc4ab60 fix: contain a duckdb FFI panic to the job that caused it
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>
2026-08-07 10:32:49 +00:00
..

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