From 18beddc88c31ba2e362213306f463c98db65284c Mon Sep 17 00:00:00 2001 From: Jochen Ehret Date: Thu, 2 Jul 2026 10:07:11 +0200 Subject: [PATCH] Fix cleanup job: Remove all droplets in state "failed" * if DropletUpload fails in blobstore.cp_to_blobstore, the droplet has no hash assigned and will never be cleaned up --- app/jobs/runtime/expired_blob_cleanup.rb | 2 +- spec/unit/jobs/runtime/expired_blob_cleanup_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/jobs/runtime/expired_blob_cleanup.rb b/app/jobs/runtime/expired_blob_cleanup.rb index 2f88f8c9c91..131ae74e451 100644 --- a/app/jobs/runtime/expired_blob_cleanup.rb +++ b/app/jobs/runtime/expired_blob_cleanup.rb @@ -5,7 +5,7 @@ class ExpiredBlobCleanup < VCAP::CloudController::Jobs::CCJob def perform logger.info('Deleting package and droplet blobs that are expired or failed') - DropletModel.where(state: [DropletModel::EXPIRED_STATE, DropletModel::FAILED_STATE]).exclude(droplet_hash: nil).each do |droplet| + DropletModel.where(state: [DropletModel::EXPIRED_STATE, DropletModel::FAILED_STATE]).each do |droplet| enqueue_droplet_delete_job(droplet.guid) end diff --git a/spec/unit/jobs/runtime/expired_blob_cleanup_spec.rb b/spec/unit/jobs/runtime/expired_blob_cleanup_spec.rb index d8b1b012953..4ce9bb61772 100644 --- a/spec/unit/jobs/runtime/expired_blob_cleanup_spec.rb +++ b/spec/unit/jobs/runtime/expired_blob_cleanup_spec.rb @@ -23,7 +23,7 @@ module Jobs::Runtime end it 'enqueues a deletion job only for buildpack droplets' do - expect { job.perform }.to change(Delayed::Job, :count).by(1) + expect { job.perform }.to change(Delayed::Job, :count).by(2) expect(Delayed::Job.last.handler).to include('DeleteExpiredDropletBlob') end end @@ -35,7 +35,7 @@ module Jobs::Runtime end it 'enqueues a deletion job only for buildpack droplets' do - expect { job.perform }.to change(Delayed::Job, :count).by(1) + expect { job.perform }.to change(Delayed::Job, :count).by(2) expect(Delayed::Job.last.handler).to include('DeleteExpiredDropletBlob') end end