windmill-labs/windmill · critical
Invalid dedicated_workers format. Got {x}, expects <workspac
Error message
Invalid dedicated_workers format. Got {x}, expects <workspace_id>:<path> What it means
Same contract as dedicated_worker but for the dedicated_workers list: each entry must be '<workspace_id>:<path>' with exactly one colon. Any entry with a different number of colon-separated parts fails parsing.
Source
Thrown at backend/windmill-common/src/worker.rs:2173
let script_path = splitted[1];
Ok(WorkspacedPath {
workspace_id: workspace.to_string(),
path: script_path.to_string(),
})
}
})
.transpose()?;
// Parse dedicated_workers (multiple dedicated workers)
let dedicated_workers = config
.dedicated_workers
.map(|workers| {
workers
.into_iter()
.map(|x| {
let splitted = x.split(':').to_owned().collect_vec();
if splitted.len() != 2 {
return Err(anyhow::anyhow!(
"Invalid dedicated_workers format. Got {x}, expects <workspace_id>:<path>"
));
}
let workspace = splitted[0];
let script_path = splitted[1];
Ok(WorkspacedPath {
workspace_id: workspace.to_string(),
path: script_path.to_string(),
})
})
.collect::<Result<Vec<_>, _>>()
})
.transpose()?;
if *WORKER_GROUP == "default" && dedicated_worker.is_none() {
let mut all_tags = config
.worker_tags
.unwrap_or_default()
.into_iter()View on GitHub (pinned to e474e8803c)
Solutions
- Fix the offending list entry to '<workspace_id>:<path>' with exactly one colon
- Validate every entry in the list individually — one bad entry rejects the whole list
- Check the surrounding container/orchestrator config for mangled separators
Example fix
// before dedicated_workers = "ws1:scripts/a, https://host/ws2:scripts/b" // after dedicated_workers = "ws1:scripts/a, ws2:scripts/b"
Defensive patterns
Strategy: validation
Validate before calling
for entry in list {
let parts: Vec<&str> = entry.split(':').collect();
assert_eq!(parts.len(), 2, "dedicated_workers entry must be <workspace_id>:<path>: {}", entry);
} Prevention
- Validate every list entry — one malformed entry rejects all
- Lint env vars for stray URLs/ports before worker startup
- Keep the list format uniform across environments
When it happens
Trigger: One of the entries in the dedicated_workers list contains extra colons (URL, port, version suffix) or no colon at all; list configured via env var where values are comma- or whitespace-split and one entry is malformed.
Common situations: Bulk-editing worker configs and one entry keeps a URL prefix; mixing formats across entries; documentation examples adapted incorrectly for multiple workers.
Related errors
- Invalid dedicated_worker format. Got {x}, expects <workspace
- preprocessor function is missing
- ${main_name} function is missing
- Found ${wrongFormatPaths.length} directory(ies) using ${foun
- Could not find a workspace mapped to branch \`${opts.fromBra
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/bc2a4944d9820292.
Report an issue: GitHub.