Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2024-01-02 07:04:07 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2024-01-02 07:04:07 +0300
commit90d76d8023038c2f5d1587e0a70b85256ea0f08a (patch)
tree6efc4f0f17e015b58f16aeb48bebe05f2ef3f166
parente6b6ac769bd034aeb14d312db923fc5a2ae1fb89 (diff)
Add latest changes from gitlab-org/gitlab@16-7-stable-ee
-rw-r--r--lib/gitlab/sidekiq_config.rb38
-rw-r--r--spec/initializers/sidekiq_spec.rb2
-rw-r--r--spec/lib/gitlab/sidekiq_config_spec.rb8
3 files changed, 29 insertions, 19 deletions
diff --git a/lib/gitlab/sidekiq_config.rb b/lib/gitlab/sidekiq_config.rb
index 33a15d95d22..b2ff80b2357 100644
--- a/lib/gitlab/sidekiq_config.rb
+++ b/lib/gitlab/sidekiq_config.rb
@@ -40,6 +40,7 @@ module Gitlab
class << self
include Gitlab::SidekiqConfig::CliMethods
+ include Gitlab::Utils::StrongMemoize
def redis_queues
# Not memoized, because this can change during the life of the application
@@ -54,28 +55,27 @@ module Gitlab
end
def cron_jobs
- @cron_jobs ||= begin
- Gitlab.config.load_dynamic_cron_schedules!
-
- jobs = Gitlab.config.cron_jobs.to_hash
-
- jobs.delete('poll_interval') # Would be interpreted as a job otherwise
-
- # Settingslogic (former gem used for yaml configuration) didn't allow 'class' key
- # Therefore, we configure cron jobs with `job_class` as a workaround.
- required_keys = %w[job_class cron]
- jobs.each do |k, v|
- if jobs[k] && required_keys.all? { |s| jobs[k].key?(s) }
- jobs[k]['class'] = jobs[k].delete('job_class')
- else
- jobs.delete(k)
- Gitlab::AppLogger.error("Invalid cron_jobs config key: '#{k}'. Check your gitlab config file.")
- end
- end
+ Gitlab.config.load_dynamic_cron_schedules!
+
+ jobs = Gitlab.config.cron_jobs.to_hash
+
+ jobs.delete('poll_interval') # Would be interpreted as a job otherwise
- jobs
+ # Settingslogic (former gem used for yaml configuration) didn't allow 'class' key
+ # Therefore, we configure cron jobs with `job_class` as a workaround.
+ required_keys = %w[job_class cron]
+ jobs.each do |k, v|
+ if jobs[k] && required_keys.all? { |s| jobs[k].key?(s) }
+ jobs[k]['class'] = jobs[k].delete('job_class')
+ else
+ jobs.delete(k)
+ Gitlab::AppLogger.error("Invalid cron_jobs config key: '#{k}'. Check your gitlab config file.")
+ end
end
+
+ jobs
end
+ strong_memoize_attr :cron_jobs
def cron_workers
@cron_workers ||= cron_jobs.map { |job_name, options| options['class'].constantize }
diff --git a/spec/initializers/sidekiq_spec.rb b/spec/initializers/sidekiq_spec.rb
index a034e628d25..fb1377244d2 100644
--- a/spec/initializers/sidekiq_spec.rb
+++ b/spec/initializers/sidekiq_spec.rb
@@ -78,11 +78,13 @@ RSpec.describe 'sidekiq', feature_category: :build do
end
around do |example|
+ Gitlab::SidekiqConfig.clear_memoization(:cron_jobs)
original_settings = Gitlab.config['cron_jobs']
Gitlab.config['cron_jobs'] = cron_jobs_settings
example.run
+ Gitlab::SidekiqConfig.clear_memoization(:cron_jobs)
Gitlab.config['cron_jobs'] = original_settings
end
diff --git a/spec/lib/gitlab/sidekiq_config_spec.rb b/spec/lib/gitlab/sidekiq_config_spec.rb
index 00b1666106f..5885151ecb5 100644
--- a/spec/lib/gitlab/sidekiq_config_spec.rb
+++ b/spec/lib/gitlab/sidekiq_config_spec.rb
@@ -18,6 +18,14 @@ RSpec.describe Gitlab::SidekiqConfig do
end
describe '.cron_jobs' do
+ around do |example|
+ described_class.clear_memoization(:cron_jobs)
+
+ example.run
+
+ described_class.clear_memoization(:cron_jobs)
+ end
+
it 'renames job_class to class and removes incomplete jobs' do
expect(Gitlab)
.to receive(:config)