Skip to content

Commit 470d08f

Browse files
authored
Allow job prio overrides with job_name_in_configuration and class name (#4095)
1 parent f5371ae commit 470d08f

File tree

3 files changed

+42
-14
lines changed

3 files changed

+42
-14
lines changed

app/jobs/enqueuer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def job_timeout
5858
end
5959

6060
def job_priority
61-
@priority_overwriter.get(@job.try(:display_name))
61+
@priority_overwriter.get(@job.try(:display_name)) || @priority_overwriter.get(@job.try(:job_name_in_configuration)) || @priority_overwriter.get(@job.class.name)
6262
end
6363

6464
def run_immediately

lib/cloud_controller/job/job_priority_overwriter.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ def initialize(config)
44
@overwritten_job_priorities = config.get(:jobs, :priorities)
55
end
66

7-
def get(job_display_name)
8-
return unless overwritten?(job_display_name)
7+
def get(job_name)
8+
return unless overwritten?(job_name)
99

10-
@overwritten_job_priorities[job_display_name.to_sym]
10+
@overwritten_job_priorities[job_name.to_sym]
1111
end
1212

1313
private
1414

15-
def overwritten?(job_display_name)
16-
return false if @overwritten_job_priorities.nil? || job_display_name.nil?
15+
def overwritten?(job_name)
16+
return false if @overwritten_job_priorities.nil? || job_name.nil?
1717

18-
@overwritten_job_priorities.key?(job_display_name.to_sym)
18+
@overwritten_job_priorities.key?(job_name.to_sym)
1919
end
2020

2121
attr_reader :config

spec/unit/jobs/enqueuer_spec.rb

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,43 @@ module VCAP::CloudController::Jobs
145145
end
146146

147147
context 'priority from config' do
148-
let(:priorities) { { priorities: { wrapped_job.display_name.to_sym => 1899 } } }
148+
context 'priority is configured via display_name' do
149+
let(:priorities) { { priorities: { 'object.delete': 1899, delete_action_job: 1900, 'VCAP::CloudController::Jobs::DeleteActionJob': 1901 } } }
149150

150-
it 'uses the configured priority' do
151-
original_enqueue = Delayed::Job.method(:enqueue)
152-
expect(Delayed::Job).to receive(:enqueue) do |enqueued_job, opts|
153-
expect(opts).to include({ priority: 1899 })
154-
original_enqueue.call(enqueued_job, opts)
151+
it 'uses the configured priority' do
152+
original_enqueue = Delayed::Job.method(:enqueue)
153+
expect(Delayed::Job).to receive(:enqueue) do |enqueued_job, opts|
154+
expect(opts).to include({ priority: 1899 })
155+
original_enqueue.call(enqueued_job, opts)
156+
end
157+
Enqueuer.new(wrapped_job, opts).enqueue_pollable
158+
end
159+
end
160+
161+
context 'priority is configured via job_name_in_configuration' do
162+
let(:priorities) { { priorities: { delete_action_job: 1900, 'VCAP::CloudController::Jobs::DeleteActionJob': 1901 } } }
163+
164+
it 'uses the configured priority' do
165+
original_enqueue = Delayed::Job.method(:enqueue)
166+
expect(Delayed::Job).to receive(:enqueue) do |enqueued_job, opts|
167+
expect(opts).to include({ priority: 1900 })
168+
original_enqueue.call(enqueued_job, opts)
169+
end
170+
Enqueuer.new(wrapped_job, opts).enqueue_pollable
171+
end
172+
end
173+
174+
context 'priority is configured via class name' do
175+
let(:priorities) { { priorities: { 'VCAP::CloudController::Jobs::DeleteActionJob': 1901 } } }
176+
177+
it 'uses the configured priority' do
178+
original_enqueue = Delayed::Job.method(:enqueue)
179+
expect(Delayed::Job).to receive(:enqueue) do |enqueued_job, opts|
180+
expect(opts).to include({ priority: 1901 })
181+
original_enqueue.call(enqueued_job, opts)
182+
end
183+
Enqueuer.new(wrapped_job, opts).enqueue_pollable
155184
end
156-
Enqueuer.new(wrapped_job, opts).enqueue_pollable
157185
end
158186

159187
context 'and priority from Enqueuer (e.g. from reoccurring jobs)' do

0 commit comments

Comments
 (0)