From 26765b4045f80784edad0709e16729f97aacc3ad Mon Sep 17 00:00:00 2001 From: Jonathan Khoo Date: Sun, 21 Jun 2026 20:11:10 +1200 Subject: [PATCH] Return database connections to the pool after each qless job This fixes an issue where workers could fail to judge submissions if the database connection was dropped (e.g. because postgresql was restarted). --- Rakefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Rakefile b/Rakefile index 60f5d9b1..1a45cefe 100644 --- a/Rakefile +++ b/Rakefile @@ -27,6 +27,18 @@ namespace :qless do Qless::Workers::ForkingWorker.send(:include, ActiveRecordReconnect) + module ActiveRecordReconnectJob + def around_perform(job) + ActiveRecord::Base.connection_pool.with_connection do + super(job) + end + end + end + + Qless::Workers::BaseWorker.class_eval do + include ActiveRecordReconnectJob + end + # The only required option is QUEUES; the # rest have reasonable defaults. queues = %w[judge queue stalejudge importer].map { |name| $qless.queues[name] }