Skip to content

Troubleshooting: Scheduler

The scheduler heartbeat is stale

The diagnostics report SCHEDULER_NOT_RUNNING when no heartbeat has been recorded or the recorded heartbeat is older than the configured window.

  1. Confirm the panel scheduler is running (the Laravel schedule must be invoked every minute).
  2. Confirm the queue is healthy first: a broken queue causes the scheduler check to be SKIPPED with the queue root reason, not a second failure.
  3. Re-run:
php artisan pterocloud:diagnose --scope=control_plane

No placement decisions are made

If the scheduler is healthy but instances are not placed, check capacity and placement diagnostics and the compute inventory freshness. A stale compute inventory reports COMPUTE_INVENTORY_STALE and blocks placement.

php artisan pterocloud:scheduler:simulate --plan=<uuid> --location=<uuid> --image=<uuid>
php artisan pterocloud:compute:audit

Queue worker missing

Symptom: QUEUE_WORKER_MISSING. Start the queue worker and confirm the queue connection:

php artisan queue:work --queue=pterocloud-tasks,pterocloud-provider,pterocloud-default