Skip to content

Commit 498f6dc

Browse files
authored
Don't schedule a delayed job for "docker" package deletion (#4103)
* there are no blobs associated with packages of type "docker", so we don't need to schedule a background job
1 parent 2ded3bf commit 498f6dc

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

app/actions/package_delete.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ def delete(packages)
88
packages = Array(packages)
99

1010
packages.each do |package|
11-
package_src_delete_job = create_package_source_deletion_job(package)
12-
Jobs::Enqueuer.new(package_src_delete_job, queue: Jobs::Queues.generic).enqueue if package_src_delete_job
11+
unless package.docker?
12+
package_src_delete_job = create_package_source_deletion_job(package)
13+
Jobs::Enqueuer.new(package_src_delete_job, queue: Jobs::Queues.generic).enqueue if package_src_delete_job
14+
end
15+
1316
package.destroy
1417

1518
Repositories::PackageEventRepository.record_app_package_delete(

spec/unit/actions/package_delete_spec.rb

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,28 @@ module VCAP::CloudController
1919
expect { package.refresh }.to raise_error Sequel::Error, 'Record not found'
2020
end
2121

22-
it 'schedules a job to the delete the blobstore item' do
23-
expect do
24-
package_delete.delete(package)
25-
end.to change(Delayed::Job, :count).by(1)
22+
context 'when the package is not of type docker' do
23+
it 'schedules a job to the delete the blobstore item' do
24+
expect do
25+
package_delete.delete(package)
26+
end.to change(Delayed::Job, :count).by(1)
27+
28+
job = Delayed::Job.last
29+
expect(job.handler).to include('VCAP::CloudController::Jobs::Runtime::BlobstoreDelete')
30+
expect(job.handler).to match(/key: ['"]?#{package.guid}/)
31+
expect(job.handler).to include('package_blobstore')
32+
expect(job.queue).to eq(Jobs::Queues.generic)
33+
expect(job.guid).not_to be_nil
34+
end
35+
end
2636

27-
job = Delayed::Job.last
28-
expect(job.handler).to include('VCAP::CloudController::Jobs::Runtime::BlobstoreDelete')
29-
expect(job.handler).to match(/key: ['"]?#{package.guid}/)
30-
expect(job.handler).to include('package_blobstore')
31-
expect(job.queue).to eq(Jobs::Queues.generic)
32-
expect(job.guid).not_to be_nil
37+
context 'when the package is of type docker' do
38+
it 'does not schedule a delayed job' do
39+
package.type = PackageModel::DOCKER_TYPE
40+
expect do
41+
package_delete.delete(package)
42+
end.not_to change(Delayed::Job, :count)
43+
end
3344
end
3445

3546
it 'creates an v3 audit event' do

0 commit comments

Comments
 (0)