From cda3ce29dfc0bfb6b0698dca456aed1f0e4ca76f Mon Sep 17 00:00:00 2001 From: Ivan Kljun Date: Thu, 4 Apr 2024 12:23:21 +0200 Subject: [PATCH] Fix rufus jobs to release db connections after use [SCI-10581] --- .rubocop.yml | 3 +++ config/initializers/scheduler.rb | 16 ++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 81760341f..460acb916 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -299,6 +299,9 @@ Naming/VariableName: Naming/VariableNumber: EnforcedStyle: normalcase +Naming/BlockForwarding: + EnforcedStyle: explicit + Style/WordArray: EnforcedStyle: percent MinSize: 0 diff --git a/config/initializers/scheduler.rb b/config/initializers/scheduler.rb index d06ed3acb..d9e276192 100644 --- a/config/initializers/scheduler.rb +++ b/config/initializers/scheduler.rb @@ -2,12 +2,17 @@ require 'rufus-scheduler' +def schedule_task(scheduler, interval, &block) + scheduler.every interval do + ActiveRecord::Base.connection_pool.with_connection(&block) + end +end + if ENV['WORKER'].present? scheduler = Rufus::Scheduler.singleton if ENV['ENABLE_TEMPLATES_SYNC'] == 'true' - # Templates sync periodic task - scheduler.every '12h' do + schedule_task(scheduler, '12h') do Rails.logger.info('Templates, syncing all template projects') updated, total = TemplatesService.new.update_all_templates Rails.logger.info( @@ -18,19 +23,18 @@ if ENV['WORKER'].present? end if ENV['ENABLE_FLUICS_SYNC'] == 'true' - scheduler.every '24h' do + schedule_task(scheduler, '24h') do LabelPrinters::Fluics::SyncService.new.sync_templates! if LabelPrinter.fluics.any? end end reminder_job_interval = ENV['REMINDER_JOB_INTERVAL'] || '1h' - - scheduler.every reminder_job_interval do + schedule_task(scheduler, reminder_job_interval) do MyModules::DueDateReminderJob.perform_now RepositoryItemDateReminderJob.perform_now end - scheduler.every '1d' do + schedule_task(scheduler, '1d') do NotificationCleanupJob.perform_now end end