delayed 2.0.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/delayed/job.rb +26 -10
- data/lib/delayed/backend/job_preparer.rb +13 -0
- data/lib/delayed/exceptions.rb +2 -0
- data/lib/delayed/monitor.rb +103 -30
- data/lib/delayed/tasks.rb +31 -11
- data/lib/delayed/version.rb +1 -1
- data/lib/delayed/worker.rb +2 -0
- data/spec/delayed/__snapshots__/monitor_spec.rb.snap +447 -1170
- data/spec/delayed/job_spec.rb +37 -6
- data/spec/delayed/monitor_spec.rb +309 -240
- data/spec/helper.rb +24 -13
- metadata +2 -2
data/spec/delayed/job_spec.rb
CHANGED
|
@@ -13,6 +13,7 @@ describe Delayed::Job do
|
|
|
13
13
|
Delayed::Worker.max_claims = 1 # disable multithreading because SimpleJob is not threadsafe
|
|
14
14
|
Delayed::Worker.default_priority = 99
|
|
15
15
|
Delayed::Worker.delay_jobs = true
|
|
16
|
+
Delayed::Worker.deny_stale_enqueues = false
|
|
16
17
|
Delayed::Worker.default_queue_name = 'default_tracking'
|
|
17
18
|
SimpleJob.runs = 0
|
|
18
19
|
described_class.delete_all
|
|
@@ -133,6 +134,42 @@ describe Delayed::Job do
|
|
|
133
134
|
expect(described_class.enqueue(SimpleJob.new)).to be_instance_of(described_class)
|
|
134
135
|
end
|
|
135
136
|
end
|
|
137
|
+
|
|
138
|
+
context 'with deny_stale_enqueues = true' do
|
|
139
|
+
before { Delayed::Worker.deny_stale_enqueues = true }
|
|
140
|
+
|
|
141
|
+
it 'raises StaleEnqueueError when run_at is beyond lock_timeout in the past' do
|
|
142
|
+
stale_time = described_class.db_time_now - described_class.lock_timeout - 1.minute
|
|
143
|
+
expect {
|
|
144
|
+
described_class.enqueue SimpleJob.new, run_at: stale_time
|
|
145
|
+
}.to raise_error(Delayed::StaleEnqueueError, /Cannot enqueue a job in the distant past/)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it 'allows run_at within lock_timeout of now' do
|
|
149
|
+
recent_past = described_class.db_time_now - described_class.lock_timeout + 1.minute
|
|
150
|
+
job = described_class.enqueue SimpleJob.new, run_at: recent_past
|
|
151
|
+
expect(job).to be_persisted
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it 'allows run_at in the future' do
|
|
155
|
+
future = described_class.db_time_now + 5.minutes
|
|
156
|
+
job = described_class.enqueue SimpleJob.new, run_at: future
|
|
157
|
+
expect(job).to be_persisted
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it 'allows enqueue without run_at' do
|
|
161
|
+
job = described_class.enqueue SimpleJob.new
|
|
162
|
+
expect(job).to be_persisted
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
context 'with deny_stale_enqueues = false (default)' do
|
|
167
|
+
it 'allows run_at far in the past' do
|
|
168
|
+
stale_time = described_class.db_time_now - 1.day
|
|
169
|
+
job = described_class.enqueue SimpleJob.new, run_at: stale_time
|
|
170
|
+
expect(job).to be_persisted
|
|
171
|
+
end
|
|
172
|
+
end
|
|
136
173
|
end
|
|
137
174
|
|
|
138
175
|
describe 'callbacks' do
|
|
@@ -1006,12 +1043,6 @@ describe Delayed::Job do
|
|
|
1006
1043
|
end
|
|
1007
1044
|
end
|
|
1008
1045
|
|
|
1009
|
-
if ActiveRecord::VERSION::MAJOR >= 7
|
|
1010
|
-
delegate :default_timezone=, to: ActiveRecord
|
|
1011
|
-
else
|
|
1012
|
-
delegate :default_timezone=, to: ActiveRecord::Base
|
|
1013
|
-
end
|
|
1014
|
-
|
|
1015
1046
|
context "db_time_now" do
|
|
1016
1047
|
after do
|
|
1017
1048
|
Time.zone = nil
|