hcengineering/platform · critical

Please provide queue config

Error message

Please provide queue config

What it means

The server bootstrap (__start.ts) requires a queue configuration to connect to the platform queue (Kafka etc.) via getPlatformQueue. If the QUEUE_CONFIG environment variable is not set, startup is aborted immediately with this error so the transactor does not run without its message queue.

Source

Thrown at pods/server/src/__start.ts:39

  type WorkspaceStatistics
} from '@hcengineering/server-core'
import serverNotification from '@hcengineering/server-notification'
import { storageConfigFromEnv } from '@hcengineering/server-storage'
import serverToken from '@hcengineering/server-token'
import { join } from 'path'
import { start } from '.'
import { profileStart, profileStop } from './profiler'

configureAnalytics('server', process.env.VERSION ?? '0.7.0')
Analytics.setTag('application', 'transactor')

let getStats: () => WorkspaceStatistics[] = () => {
  return []
}

const queueConfig = process.env.QUEUE_CONFIG
if (queueConfig === undefined) {
  throw new Error('Please provide queue config')
}

const queue = getPlatformQueue('transactor')

void queue.createTopics(10).catch((err) => {
  console.error('Failed to create required topics', err)
})

// Force create server metrics context with proper logging
const metricsContext = initStatisticsContext('transactor', {
  getStats: (): WorkspaceStatistics[] => {
    return getStats()
  },
  factory: () =>
    createOpenTelemetryMetricsContext(
      'server',
      {},
      {},

View on GitHub (pinned to 63e28dc964)

Solutions

  1. Set QUEUE_CONFIG in the environment before starting (e.g. export QUEUE_CONFIG='kafka://localhost:9092' or the URI/format your deployment expects).
  2. Check your k8s/docker deployment env and secrets references actually resolve for this pod.
  3. Compare with docs/examples for the expected QUEUE_CONFIG format for your platform version.
  4. If it should be optional in dev, run the server via a configured .env / docker-compose that defines it.

Example fix

// before
npm start
// after
export QUEUE_CONFIG='kafka://localhost:9092'
npm start
Defensive patterns

Strategy: validation

Validate before calling

if (!process.env.QUEUE_CONFIG) {
  throw new Error('QUEUE_CONFIG must be set before starting the server')
}

Type guard

function hasQueueConfig(env: NodeJS.ProcessEnv): env is NodeJS.ProcessEnv & { QUEUE_CONFIG: string } {
  return typeof env.QUEUE_CONFIG === 'string' && env.QUEUE_CONFIG.length > 0
}

Try / catch

try {
  await startServer()
} catch (err) {
  if (/queue config/i.test(err.message)) {
    console.error('QUEUE_CONFIG is missing; set it in env/secrets and restart')
    process.exit(1)
  }
  throw err
}

Prevention

When it happens

Trigger: Starting the server pod without QUEUE_CONFIG defined in the environment — missing entry in k8s Deployment env, secrets not mounted, docker run without -e QUEUE_CONFIG, or running the script locally without a .env.

Common situations: Fresh local setup missing the sample env, CI forgetting to inject secrets, renaming of the env var in a new release, secrets manager outage yielding empty env.

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of hcengineering/platform@63e28dc964 (2026-08-29). Data as JSON: /api/errors/3e729e247af32773. Report an issue: GitHub.