windmill-labs/windmill · error · Error
Failed to poll dependencies job ${jobId}: ${e?.message ?? e}
Error message
Failed to poll dependencies job ${jobId}: ${e?.message ?? e} What it means
After the dependencies job is queued, generateInlineScriptLock polls it with pollJobWithQueueLogging; if that polling call throws (network drop, job endpoint 404, auth error), the catch re-wraps it with the job id and original message. This tells you the dependency lock job could not be tracked to completion — note that the job itself may still exist server-side.
Source
Thrown at cli/src/commands/app/app_metadata.ts:809
if (!queueResponse.ok) {
const text = await queueResponse.text();
throw new Error(
`Dependency generation failed: ${queueResponse.status} ${queueResponse.statusText}\n${text}`
);
}
const jobId = (await queueResponse.text()).trim();
let completion;
try {
completion = await pollJobWithQueueLogging(
workspace.workspaceId,
jobId,
{ label: `deps ${scriptPath}` },
);
} catch (e: any) {
throw new Error(
`Failed to poll dependencies job ${jobId}: ${e?.message ?? e}`
);
}
const result = completion.result as any;
if (!completion.success) {
const message =
result?.error?.message ??
(typeof result === "string" ? result : JSON.stringify(result, null, 2));
throw new Error(`Failed to generate lockfile: ${message}`);
}
const lock = result?.lock;
if (lock === undefined) {
throw new Error(
`Failed to generate lockfile: ${JSON.stringify(result, null, 2)}`
);
}View on GitHub (pinned to e474e8803c)
Solutions
- Re-run the app sync command — the wrapped `e?.message` explains the root failure; transient network issues usually clear on retry
- Verify the job exists (`wmill job show <jobId>` or the Runs page) to see whether it actually completed despite the poll failure
- Check token validity and network stability (VPN/proxy) for long-running operations
- If the job errored server-side, inspect its logs in the UI and fix the dependency definition (e.g. bad imports in the inline script) before retrying
Defensive patterns
Strategy: retry
Validate before calling
// confirm the job exists before/while polling
const job = await wmill.getJob({ workspace: workspace.workspaceId, id: jobId });
if (!job) throw new Error(`dependencies job ${jobId} not found — was it purged?`); Try / catch
try {
await generateInlineScriptLock(workspace, scriptPath, ...);
} catch (e) {
if (String(e).startsWith('Failed to poll dependencies job')) {
console.error('Polling failed (network/auth/job gone). Check the job in the Runs page and retry the sync.');
}
throw e;
} Prevention
- Run app sync on a stable connection; avoid VPN drops mid-operation in CI (use a runner in-network)
- Use a long-lived token for CI so it cannot expire mid-poll
- If polling repeatedly fails, check job retention settings and the job's server-side logs by id
When it happens
Trigger: Polling a just-queued dependencies_async job fails: connection reset/timeout mid-poll, token expired between queue and poll, job was deleted/purged (404 on job fetch), workspace switched mid-operation, or the poll helper itself threw on a 5xx.
Common situations: Flaky VPN/corporate proxy dropping long-running CLI operations; instance restarted while the CLI was polling; CLI token TTL expired during a long sync; job run retention/cleanup removed the job before completion.
Related errors
- Dependency generation failed: ${queueResponse.status} ${queu
- Failed to poll flow dependencies job ${jobId}: ${e?.message
- Giving up polling job ${jobId} after ${MAX_CONSECUTIVE_POLL_
- Failed to poll dependencies job ${jobId}: ${e?.message ?? e}
- Could not auto-fill missing lockfile entries: ${e instanceof
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/01bd8a1aa0df894e.
Report an issue: GitHub.