From 37c82a30034452802ceebc178e04958a89ef5381 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 26 May 2025 11:32:41 -0400 Subject: [PATCH] Update sidekiq to version 7 (#34745) --- Gemfile | 5 ++-- Gemfile.lock | 30 ++++++++++--------- app/lib/redis_connection.rb | 2 +- .../scheduler/self_destruct_scheduler.rb | 2 +- config/database.yml | 2 +- config/initializers/sidekiq.rb | 6 ++-- lib/mastodon/redis_configuration.rb | 3 +- spec/lib/mastodon/redis_configuration_spec.rb | 3 -- spec/rails_helper.rb | 2 +- 9 files changed, 28 insertions(+), 27 deletions(-) diff --git a/Gemfile b/Gemfile index 6a5f0c5343..616889a82d 100644 --- a/Gemfile +++ b/Gemfile @@ -52,6 +52,7 @@ gem 'faraday-httpclient' gem 'fast_blank', '~> 1.0' gem 'fastimage' gem 'hiredis', '~> 0.6' +gem 'hiredis-client' gem 'htmlentities', '~> 4.3' gem 'http', '~> 5.2.0' gem 'http_accept_language', '~> 2.1' @@ -82,10 +83,10 @@ gem 'rqrcode', '~> 3.0' gem 'ruby-progressbar', '~> 1.13' gem 'sanitize', '~> 7.0' gem 'scenic', '~> 1.7' -gem 'sidekiq', '~> 6.5' +gem 'sidekiq', '< 8' gem 'sidekiq-bulk', '~> 0.2.0' gem 'sidekiq-scheduler', '~> 5.0' -gem 'sidekiq-unique-jobs', '~> 7.1' +gem 'sidekiq-unique-jobs', '> 8' gem 'simple_form', '~> 5.2' gem 'simple-navigation', '~> 4.4' gem 'stoplight', '~> 4.1' diff --git a/Gemfile.lock b/Gemfile.lock index 83a9751c7a..5d48d3bbf1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -129,9 +129,6 @@ GEM brakeman (7.0.2) racc browser (6.2.0) - brpoplpush-redis_script (0.1.3) - concurrent-ruby (~> 1.0, >= 1.0.5) - redis (>= 1.0, < 6) builder (3.3.0) bundler-audit (0.9.2) bundler (>= 1.2.0, < 3) @@ -296,6 +293,8 @@ GEM highline (3.1.2) reline hiredis (0.6.3) + hiredis-client (0.24.0) + redis-client (= 0.24.0) hkdf (0.3.0) htmlentities (4.3.4) http (5.2.0) @@ -702,6 +701,8 @@ GEM psych (>= 4.0.0) redcarpet (3.6.1) redis (4.8.1) + redis-client (0.24.0) + connection_pool redlock (1.3.2) redis (>= 3.0.0, < 6.0) regexp_parser (2.10.0) @@ -814,22 +815,22 @@ GEM websocket (~> 1.0) shoulda-matchers (6.5.0) activesupport (>= 5.2.0) - sidekiq (6.5.12) - connection_pool (>= 2.2.5, < 3) - rack (~> 2.0) - redis (>= 4.5.0, < 5) + sidekiq (7.3.9) + base64 + connection_pool (>= 2.3.0) + logger + rack (>= 2.2.4) + redis-client (>= 0.22.2) sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (5.0.6) rufus-scheduler (~> 3.2) sidekiq (>= 6, < 8) tilt (>= 1.4.0, < 3) - sidekiq-unique-jobs (7.1.33) - brpoplpush-redis_script (> 0.1.1, <= 2.0.0) + sidekiq-unique-jobs (8.0.10) concurrent-ruby (~> 1.0, >= 1.0.5) - redis (< 5.0) - sidekiq (>= 5.0, < 7.0) - thor (>= 0.20, < 3.0) + sidekiq (>= 7.0.0, < 8.0.0) + thor (>= 1.0, < 3.0) simple-navigation (4.4.0) activesupport (>= 2.3.2) simple_form (5.3.1) @@ -982,6 +983,7 @@ DEPENDENCIES haml_lint hcaptcha (~> 7.1) hiredis (~> 0.6) + hiredis-client htmlentities (~> 4.3) http (~> 5.2.0) http_accept_language (~> 2.1) @@ -1070,10 +1072,10 @@ DEPENDENCIES scenic (~> 1.7) selenium-webdriver shoulda-matchers - sidekiq (~> 6.5) + sidekiq (< 8) sidekiq-bulk (~> 0.2.0) sidekiq-scheduler (~> 5.0) - sidekiq-unique-jobs (~> 7.1) + sidekiq-unique-jobs (> 8) simple-navigation (~> 4.4) simple_form (~> 5.2) simplecov (~> 0.22) diff --git a/app/lib/redis_connection.rb b/app/lib/redis_connection.rb index cbbd7e5a7a..2db5b794fd 100644 --- a/app/lib/redis_connection.rb +++ b/app/lib/redis_connection.rb @@ -15,7 +15,7 @@ class RedisConnection def pool_size if Sidekiq.server? - Sidekiq[:concurrency] + Sidekiq.default_configuration[:concurrency] else ENV['MAX_THREADS'] || 5 end diff --git a/app/workers/scheduler/self_destruct_scheduler.rb b/app/workers/scheduler/self_destruct_scheduler.rb index d0b6ce8a07..645d957321 100644 --- a/app/workers/scheduler/self_destruct_scheduler.rb +++ b/app/workers/scheduler/self_destruct_scheduler.rb @@ -20,7 +20,7 @@ class Scheduler::SelfDestructScheduler private def sidekiq_overwhelmed? - redis_mem_info = Sidekiq.redis_info + redis_mem_info = Sidekiq.default_configuration.redis_info Sidekiq::Stats.new.enqueued > MAX_ENQUEUED || redis_mem_info['used_memory'].to_f > redis_mem_info['total_system_memory'].to_f * MAX_REDIS_MEM_USAGE end diff --git a/config/database.yml b/config/database.yml index eba20e849f..09f2e0d4dd 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,6 +1,6 @@ default: &default adapter: postgresql - pool: <%= ENV["DB_POOL"] || (if Sidekiq.server? then Sidekiq[:concurrency] else ENV['MAX_THREADS'] end) || 5 %> + pool: <%= ENV["DB_POOL"] || (if Sidekiq.server? then Sidekiq.default_configuration[:concurrency] else ENV['MAX_THREADS'] end) || 5 %> timeout: 5000 connect_timeout: 15 encoding: unicode diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index fca0bec422..b2ebdbf078 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -89,6 +89,8 @@ Sidekiq.configure_server do |config| end end + config.logger.level = Logger.const_get(ENV.fetch('RAILS_LOG_LEVEL', 'info').upcase.to_s) + SidekiqUniqueJobs::Server.configure(config) end @@ -98,9 +100,9 @@ Sidekiq.configure_client do |config| config.client_middleware do |chain| chain.add SidekiqUniqueJobs::Middleware::Client end -end -Sidekiq.logger.level = ::Logger.const_get(ENV.fetch('RAILS_LOG_LEVEL', 'info').upcase.to_s) + config.logger.level = Logger.const_get(ENV.fetch('RAILS_LOG_LEVEL', 'info').upcase.to_s) +end SidekiqUniqueJobs.configure do |config| config.enabled = !Rails.env.test? diff --git a/lib/mastodon/redis_configuration.rb b/lib/mastodon/redis_configuration.rb index 5b04b24e09..7330f7d0e5 100644 --- a/lib/mastodon/redis_configuration.rb +++ b/lib/mastodon/redis_configuration.rb @@ -9,7 +9,6 @@ class Mastodon::RedisConfiguration def base @base ||= setup_config(prefix: nil, defaults: DEFAULTS) - .merge(namespace: nil) end def sidekiq @@ -23,7 +22,7 @@ class Mastodon::RedisConfiguration expires_in: 10.minutes, connect_timeout: 5, pool: { - size: Sidekiq.server? ? Sidekiq[:concurrency] : Integer(ENV['MAX_THREADS'] || 5), + size: Sidekiq.server? ? Sidekiq.default_configuration[:concurrency] : Integer(ENV['MAX_THREADS'] || 5), timeout: 5, }, }) diff --git a/spec/lib/mastodon/redis_configuration_spec.rb b/spec/lib/mastodon/redis_configuration_spec.rb index 1f8f116bbf..d8a8dd86d2 100644 --- a/spec/lib/mastodon/redis_configuration_spec.rb +++ b/spec/lib/mastodon/redis_configuration_spec.rb @@ -156,7 +156,6 @@ RSpec.describe Mastodon::RedisConfiguration do expect(subject).to eq({ url: 'redis://localhost:6379/0', driver: :hiredis, - namespace: nil, }) end end @@ -172,7 +171,6 @@ RSpec.describe Mastodon::RedisConfiguration do expect(subject).to eq({ url: 'redis::/user@example.com/2', driver: :hiredis, - namespace: nil, }) end end @@ -188,7 +186,6 @@ RSpec.describe Mastodon::RedisConfiguration do expect(subject).to eq({ url: 'redis://:testpass@redis.example.com:3333/3', driver: :hiredis, - namespace: nil, }) end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 7d63ea6300..3d3e556f35 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -53,7 +53,7 @@ WebMock.disable_net_connect!( allow_localhost: true, allow: Chewy.settings[:host] ) -Sidekiq.logger = nil +Sidekiq.default_configuration.logger = nil DatabaseCleaner.strategy = [:deletion]