-
Notifications
You must be signed in to change notification settings - Fork 210
Description
Describe the bug
In development, running the Solid Queue CLI registers/starts a Supervisor process but the scheduler never loads config/recurring.yml. As a result, solid_queue_recurring_tasks and solid_queue_recurring_executions remain empty and no recurring jobs ever enqueue.
Environment
• macOS Tahoe 26.0.1 (arm64)
• Ruby 3.4.4 (+YJIT)
• Rails 8.0.3
• solid_queue 1.2.1 (bundle info solid_queue confirms)
• DB: Postgres on Neon (separate DB used for Solid Queue)
• SolidQueue::Process.connection.current_database => "atlas_queue"
• Dev environment, running locally.
How I start Solid Queue
• Procfile entry used by bin/dev: jobs: bin/jobs
(bin/jobs is a thin wrapper: it requires ../config/environment and then SolidQueue::Cli.start(ARGV).)
• I also tried launching the CLI directly. See diagnostics below.
Relevant config & env
• .env:
SOLID_QUEUE_RECURRING_SCHEDULE=config/recurring.yml
SOLID_QUEUE_CONFIG=config/queue.yml
• config/queue.yml: defines dispatchers/workers; no explicit scheduler block.
• config/recurring.yml: has a development: section with tasks (e.g., get_bookings every 1 minute and a cleanup task).
What I expect
The scheduler should read config/recurring.yml, persist tasks into solid_queue_recurring_tasks / solid_queue_recurring_executions, and enqueue on schedule.
What actually happens
• Only the Supervisor starts; no scheduler logs/messages and no recurring rows get created.
Diagnostics collected
1. Env + file visibility (ok):
bin/rails r 'pp ENV.slice("SOLID_QUEUE_CONFIG","SOLID_QUEUE_RECURRING_SCHEDULE","SOLID_QUEUE_SKIP_RECURRING");
puts "Exists(SOLID_QUEUE_CONFIG)? #{File.exist?(ENV["SOLID_QUEUE_CONFIG"].to_s)}";
puts "Exists(SOLID_QUEUE_RECURRING_SCHEDULE)? #{File.exist?(ENV["SOLID_QUEUE_RECURRING_SCHEDULE"].to_s)}"'
Output:
{"SOLID_QUEUE_CONFIG"=>"config/queue.yml", "SOLID_QUEUE_RECURRING_SCHEDULE"=>"config/recurring.yml"}
Exists(SOLID_QUEUE_CONFIG)? true
Exists(SOLID_QUEUE_RECURRING_SCHEDULE)? true
2. CLI “about” still boots only Supervisor (no scheduler):
bin/jobs about
Logs (abridged):
SolidQueue-1.2.1 Register Supervisor ...
SolidQueue-1.2.1 Fail claimed jobs ...
SolidQueue-1.2.1 Started Supervisor ...
(no scheduler or recurring log lines)
3. After the runner is up, recurring tables remain empty:
bin/rails r 'puts "RecurringTask.count=#{SolidQueue::RecurringTask.count}";
puts "RecurringExecution.count=#{SolidQueue::RecurringExecution.count}";
pp SolidQueue::RecurringTask.limit(5).pluck(:key, :queue_name, :schedule);
pp SolidQueue::RecurringExecution.order(:run_at).limit(5).pluck(:task_key, :run_at)'
Output:
RecurringTask.count=0
RecurringExecution.count=0
[]
[]
Notes
• Tables exist with expected columns (e.g., solid_queue_recurring_tasks.key, solid_queue_recurring_executions.task_key).
• The same .env is visible to Rails and to the CLI (since bin/jobs requires the Rails environment first).
• I also tried setting:
SOLID_QUEUE_LOG_LEVEL=debug
SOLID_QUEUE_CONFIG=config/queue.yml
SOLID_QUEUE_RECURRING_SCHEDULE=config/recurring.yml
bin/jobs start
(If the CLI is supposed to print an explicit “loading recurring schedule” line, I don’t see it.)
Questions
1. In 1.2.1, should the scheduler come up automatically with bin/jobs start when SOLID_QUEUE_RECURRING_SCHEDULE is set? Or is there another env/flag expected?
2. Am I wrong in thinking the supervisor should fork into new processes?
3. Is this issue isolated to this version or environment setup?