From 16d97f2e2420a7f0bad696bacb4c3785a01b3a95 Mon Sep 17 00:00:00 2001 From: Rosa Gutierrez Date: Wed, 9 Aug 2023 20:49:38 +0200 Subject: [PATCH] Add small method to calculate max number of DB threads --- lib/solid_queue/configuration.rb | 5 +++++ lib/solid_queue/engine.rb | 2 +- test/unit/configuration_test.rb | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/solid_queue/configuration.rb b/lib/solid_queue/configuration.rb index 713db5c01..61a715d89 100644 --- a/lib/solid_queue/configuration.rb +++ b/lib/solid_queue/configuration.rb @@ -40,6 +40,11 @@ def scheduler end end + def max_number_of_threads + # At most pool_size thread in each worker + 1 thread for the worker + 1 thread for the heartbeat task + queues.values.map { |queue| queue[:pool_size] }.max + 2 + end + private attr_reader :raw_config, :mode diff --git a/lib/solid_queue/engine.rb b/lib/solid_queue/engine.rb index b207409b5..eebef7567 100644 --- a/lib/solid_queue/engine.rb +++ b/lib/solid_queue/engine.rb @@ -19,7 +19,7 @@ class Engine < ::Rails::Engine initializer "solid_queue.app_executor", before: :run_prepare_callbacks do |app| config.solid_queue.app_executor ||= app.executor - config.solid_queue.on_thread_error ||= -> (exception) { Rails.error.report(exception) } + config.solid_queue.on_thread_error ||= -> (exception) { Rails.error.report(exception, handled: false) } SolidQueue.app_executor = config.solid_queue.app_executor SolidQueue.on_thread_error = config.solid_queue.on_thread_error diff --git a/test/unit/configuration_test.rb b/test/unit/configuration_test.rb index fe3c9f208..ecfe307f2 100644 --- a/test/unit/configuration_test.rb +++ b/test/unit/configuration_test.rb @@ -15,4 +15,9 @@ class ConfigurationTest < ActiveSupport::TestCase assert_equal SolidQueue::Configuration::SCHEDULER_DEFAULTS[:polling_interval], configuration.scheduler.polling_interval assert configuration.workers.detect { |w| w.queue == "background" }.pool_size > 0 end + + test "max number of threads" do + configuration = SolidQueue::Configuration.new(mode: :all) + assert 7, configuration.max_number_of_threads + end end