diff --git a/lib/active_job/queue_adapters/solid_queue_adapter.rb b/lib/active_job/queue_adapters/solid_queue_adapter.rb index fe5560427..f7e23a1c9 100644 --- a/lib/active_job/queue_adapters/solid_queue_adapter.rb +++ b/lib/active_job/queue_adapters/solid_queue_adapter.rb @@ -8,9 +8,17 @@ module QueueAdapters # # Rails.application.config.active_job.queue_adapter = :solid_queue class SolidQueueAdapter < (Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR == 1 ? Object : AbstractAdapter) - class_attribute :stopping, default: false, instance_writer: false + class_attribute :stopping, default: false, instance_writer: false, instance_predicate: false SolidQueue.on_worker_stop { self.stopping = true } + # Accept an optional job argument for compatibility with Rails main, which + # began passing the running job to +queue_adapter.stopping?+ so adapters can + # decide whether to checkpoint based on it. We rely solely on the worker + # shutdown flag, so the argument is ignored. + def stopping?(_job = nil) + self.class.stopping + end + def enqueue_after_transaction_commit? true end