windmill-labs/windmill · error

The connection check did not run. Is a worker listening to t

Error message

The connection check did not run. Is a worker listening to the postgresql tag available?

What it means

probeDatatableConnection runs a connection-check script on the 'postgresql' worker tag and polls for its completion with a timeout. If the job never reaches a completed state within the timeout, the probe assumes no worker is listening on that tag and throws this error — the check itself never reported success or failure.

Source

Thrown at frontend/src/lib/components/workspaceSettings/datatableProbe.ts:82

	let completed: Awaited<ReturnType<typeof JobService.getCompletedJob>> | undefined = undefined
	await tryEvery({
		tryCode: async () => {
			completed = await JobService.getCompletedJob({ workspace, id: job })
		},
		timeoutCode: async () => {
			await JobService.cancelQueuedJob({
				workspace,
				id: job,
				requestBody: { reason: 'The connection check did not start' }
			}).catch(() => {})
		},
		interval: 500,
		timeout
	})

	if (!completed) {
		throw new Error(
			'The connection check did not run. Is a worker listening to the postgresql tag available?'
		)
	}
	const done = completed as { success: boolean; result?: any }
	if (!done.success) {
		throw new Error(done.result?.error?.message ?? 'Could not connect to the database')
	}

	const row: Row = (Array.isArray(done.result) ? done.result[0] : done.result) ?? {}
	// Suggested only where the privilege is actually missing; Postgres returns NULL for a
	// statement it could not name, which is the case where no grant would help anyway.
	const suggested_grants = [
		row.can_create_table ? undefined : (row.grant_schema ?? undefined),
		row.can_create_schema ? undefined : (row.grant_database ?? undefined)
	].filter((s): s is string => !!s)

	return {
		user: row.usr ?? '',

View on GitHub (pinned to e474e8803c)

Solutions

  1. Start a worker listening on the 'postgresql' tag (e.g. `windmill worker --tag postgresql`)
  2. Check the worker is running and connected: look at the Workers admin page for a live worker with the postgresql tag
  3. Increase the probe timeout if workers are simply slow/queued
  4. Verify worker tags match the tag configured for the data table connection check

Example fix

// before
npx windmill worker  # default tags only
// after
npx windmill worker --tag postgresql
Defensive patterns

Strategy: validation

Validate before calling

const workers = await WorkerService.getWorkers()
if (!workers.some(w => (w.tags ?? []).includes('postgresql'))) {
  throw new Error('Start a worker with --tag postgresql before probing the connection')
}

Try / catch

try {
  await probeDatatableConnection(...)
} catch (e) {
  if (String(e.message).includes('did not run')) {
    // check worker availability, then offer a retry
  }
}

Prevention

When it happens

Trigger: No worker serves the 'postgresql' tag (workers offline or not started with that tag); the worker is overloaded and the job exceeds the probe timeout; worker queue congestion delays execution past `timeout` at 500ms intervals.

Common situations: Fresh/CE instance where no postgresql-tagged native worker is running; all workers crashed or were restarted during setup; misconfigured worker tags so the job sits unqueued forever.

Related errors


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