mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-06 00:02:13 +00:00
Every path that touches a data table's permissions or a principal its roles can name takes the workspace settings row before it locks anything else, and a transaction spanning workspaces takes them in `workspace_id` order. One lock acquired first cannot deadlock, so the rule is stated once on the lock rather than as an order each handler has to reproduce — the rename can write its thirty tables in whatever order reads best, and the statements moved around to fake an order move back. What waits for the config to commit is now decided from the plan and checked per role: a request that disables permissions still lists every role, so the set built from it claimed them all and no drop waited at all. A role the committed config no longer names is dropped whatever else changed meanwhile, where before any unrelated edit — a tenant, the default role — made the whole cleanup stand down and left the login behind with nothing that would ever remove it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5arH3G2Sa1Qqm32veJQ1n
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