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

  1. Re-run the app sync command — the wrapped `e?.message` explains the root failure; transient network issues usually clear on retry
  2. Verify the job exists (`wmill job show <jobId>` or the Runs page) to see whether it actually completed despite the poll failure
  3. Check token validity and network stability (VPN/proxy) for long-running operations
  4. 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

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


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/01bd8a1aa0df894e. Report an issue: GitHub.