Skip to content

Commit 700a2b4

Browse files
authored
Merge pull request #41 from salsify/ms/revert-version-13
Reverts Version 0.13
2 parents c8ec79d + 0daaeb9 commit 700a2b4

File tree

9 files changed

+11
-85
lines changed

9 files changed

+11
-85
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog
22

3+
## 0.14.0
4+
- Reverts changes made in version 0.13.
5+
36
## 0.13.0
47
- Moves `on_cancellation` logic from the before delayed job lifecycle hook to the after hook.
58
- Gem will now fail to load if `Delayed::Worker.destroy_failed_jobs` is set to true.

lib/delayed/job_groups/errors.rb

Lines changed: 0 additions & 16 deletions
This file was deleted.

lib/delayed/job_groups/job_group.rb

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,18 +62,8 @@ def unblock
6262
end
6363

6464
def cancel
65-
with_lock do
66-
return if destroyed?
67-
68-
Delayed::Job.enqueue(on_cancellation_job, on_cancellation_job_options || {}) if on_cancellation_job
69-
destroy
70-
end
71-
rescue ActiveRecord::RecordNotFound
72-
# The first failing job to attempt cancelling the job group will enqueue the
73-
# on cancellation job and destroy the group. Any other concurrently failing job
74-
# in the same group can therefore silently return if the job group has already
75-
# been destroyed.
76-
nil
65+
Delayed::Job.enqueue(on_cancellation_job, on_cancellation_job_options || {}) if on_cancellation_job
66+
destroy
7767
end
7868

7969
def check_for_completion(skip_pending_jobs_check: false)

lib/delayed/job_groups/plugin.rb

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,7 @@ def job.max_attempts
1717
end
1818
end
1919

20-
# In order to allow individual jobs in the JobGroup to perform cleanup activities upon
21-
# job failure, a JobGroups on cancellation job must be enqueued in the after failure
22-
# delayed job lifecycle hook. If both were to be performed in the same hook, the job's
23-
# failure hook and the on cancellation job may run at the same time since hook execution
24-
# order is never guaranteed. This is particular important if the on cancellation job
25-
# depends on state set in the failure hook of an individual job.
26-
lifecycle.after(:failure) do |_worker, job|
20+
lifecycle.before(:failure) do |_worker, job|
2721
# If a job in the job group fails, then cancel the whole job group.
2822
# Need to check that the job group is present since another
2923
# job may have concurrently cancelled it.

lib/delayed/job_groups/railtie.rb

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,6 @@ module Delayed
44
module JobGroups
55
class Railtie < ::Rails::Railtie
66
config.after_initialize do
7-
8-
# On cancellation checks are performed in the after failure delayed job lifecycle, however
9-
# https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/worker.rb#L268 may
10-
# delete jobs before the hook runs. This could cause a successful job in the same group to
11-
# complete the group instead of the group being cancelled. Therefore, we must ensure that
12-
# the Delayed::Worker.destroy_failed_jobs is set to false, guaranteeing that the group is
13-
# never empty if failure occurs.
14-
raise Delayed::JobGroups::IncompatibleWithDelayedJobError if Delayed::Worker.destroy_failed_jobs
15-
167
Delayed::Backend::ActiveRecord::Job.include(Delayed::JobGroups::JobExtensions)
178
end
189
end

lib/delayed/job_groups/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
module Delayed
44
module JobGroups
5-
VERSION = '0.13.0'
5+
VERSION = '0.14.0'
66
end
77
end

lib/delayed_job_groups_plugin.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
require 'active_record'
55
require 'delayed_job'
66
require 'delayed_job_active_record'
7-
require 'delayed/job_groups/errors'
87
require 'delayed/job_groups/compatibility'
98
require 'delayed/job_groups/complete_stuck_job_groups_job'
109
require 'delayed/job_groups/job_extensions'
@@ -19,7 +18,6 @@
1918
else
2019
# Do the same as in the railtie
2120
Delayed::Backend::ActiveRecord::Job.include(Delayed::JobGroups::JobExtensions)
22-
raise Delayed::JobGroups::IncompatibleWithDelayedJobError if Delayed::Worker.destroy_failed_jobs
2321
end
2422

2523
Delayed::Worker.plugins << Delayed::JobGroups::Plugin

spec/delayed/job_groups/job_group_spec.rb

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -299,28 +299,11 @@
299299
end
300300

301301
describe "#cancel" do
302-
subject(:job_group) do
303-
create(
304-
:job_group,
305-
on_completion_job: on_completion_job,
306-
on_completion_job_options: on_completion_job_options,
307-
on_cancellation_job: on_cancellation_job,
308-
on_cancellation_job_options: on_cancellation_job_options,
309-
blocked: blocked
310-
)
311-
end
312-
313302
let!(:queued_job) { Delayed::Job.create!(job_group_id: job_group.id) }
314303
let!(:running_job) { Delayed::Job.create!(job_group_id: job_group.id, locked_at: Time.now, locked_by: 'test') }
315-
let(:before_hook) {}
316-
let(:on_cancellation_job) { 'dummy job' }
317-
let(:on_cancellation_job_options) do
318-
{ foo: 'bar' }
319-
end
320-
let(:cancel) { true }
321304

322305
before do
323-
job_group.cancel if cancel
306+
job_group.cancel
324307
end
325308

326309
it "destroys the job group" do
@@ -334,21 +317,6 @@
334317
it "does not destroy running jobs" do
335318
expect(running_job).not_to have_been_destroyed
336319
end
337-
338-
context "when already cancelled" do
339-
let(:cancel) { false }
340-
341-
it "skips cancel block if already cancelled" do
342-
other = Delayed::JobGroups::JobGroup.find(job_group.id)
343-
job_group.cancel
344-
345-
other.cancel
346-
other.cancel
347-
348-
expect(Delayed::Job)
349-
.to have_received(:enqueue).with(on_cancellation_job, on_cancellation_job_options).once
350-
end
351-
end
352320
end
353321

354322
describe "#failure_cancels_group?" do

spec/spec_helper.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@
1313

1414
require 'rspec/its'
1515
require 'database_cleaner'
16-
require 'delayed_job'
17-
18-
Delayed::Worker.read_ahead = 1
19-
Delayed::Worker.destroy_failed_jobs = false
20-
2116
require 'delayed_job_groups_plugin'
2217
require 'factory_bot'
2318
require 'yaml'
@@ -28,6 +23,9 @@
2823

2924
FileUtils.makedirs('log')
3025

26+
Delayed::Worker.read_ahead = 1
27+
Delayed::Worker.destroy_failed_jobs = false
28+
3129
Delayed::Worker.logger = Logger.new('log/test.log')
3230
Delayed::Worker.logger.level = Logger::DEBUG
3331
ActiveRecord::Base.logger = Delayed::Worker.logger

0 commit comments

Comments
 (0)