Skip to content

Commit 70fdfb4

Browse files
authored
Raise custom error for FIFO delay instead of ArgumentError (#957)
1 parent 19c1940 commit 70fdfb4

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

lib/active_job/queue_adapters/shoryuken_adapter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def enqueue(job, options = {}) # :nodoc:
9898
# @param job [ActiveJob::Base] the job to enqueue
9999
# @param timestamp [Float] Unix timestamp when the job should be processed
100100
# @return [Aws::SQS::Types::SendMessageResult] the send result
101-
# @raise [ArgumentError] if delay is used with a FIFO queue
101+
# @raise [Shoryuken::Errors::FifoDelayNotSupportedError] if delay is used with a FIFO queue
102102
def enqueue_at(job, timestamp) # :nodoc:
103103
delay = calculate_delay(timestamp)
104104

@@ -110,7 +110,7 @@ def enqueue_at(job, timestamp) # :nodoc:
110110
if delay.positive?
111111
queue = Shoryuken::Client.queues(job.queue_name)
112112
if queue.fifo?
113-
raise ArgumentError,
113+
raise Shoryuken::Errors::FifoDelayNotSupportedError,
114114
"FIFO queue '#{queue.name}' does not support per-message delays. " \
115115
'When using ActiveJob retry_on with FIFO queues, set `wait: 0`.'
116116
end

lib/shoryuken/errors.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ module Errors
2727
# Raised when a delay exceeds the maximum allowed by SQS (15 minutes)
2828
InvalidDelayError = Class.new(BaseError)
2929

30+
# Raised when a delay is used with a FIFO queue
31+
FifoDelayNotSupportedError = Class.new(BaseError)
32+
3033
# Raised when an ARN format is invalid
3134
InvalidArnError = Class.new(BaseError)
3235
end

spec/shared_examples_for_active_job.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,13 +285,13 @@ class TestJob < ActiveJob::Base; end
285285
context 'when fifo' do
286286
let(:fifo) { true }
287287

288-
it 'raises ArgumentError when delay is positive' do
288+
it 'raises FifoDelayNotSupportedError when delay is positive' do
289289
allow(subject).to receive(:calculate_delay).and_return(3)
290290
allow(queue).to receive(:name).and_return('test.fifo')
291291
expect(queue).not_to receive(:send_message)
292292

293293
expect { subject.enqueue_at(job, nil) }.to raise_error(
294-
ArgumentError, /FIFO queue.*does not support per-message delays/
294+
Shoryuken::Errors::FifoDelayNotSupportedError, /FIFO queue.*does not support per-message delays/
295295
)
296296
end
297297

0 commit comments

Comments
 (0)