53 lines
1.2 KiB
Ruby
53 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Packages
|
|
class CleanupPackageFileWorker
|
|
include ApplicationWorker
|
|
include ::Packages::CleanupArtifactWorker
|
|
include Gitlab::Utils::StrongMemoize
|
|
|
|
data_consistency :always
|
|
queue_namespace :package_cleanup
|
|
feature_category :package_registry
|
|
urgency :low
|
|
worker_resource_boundary :unknown
|
|
idempotent!
|
|
|
|
def max_running_jobs
|
|
::Gitlab::CurrentSettings.packages_cleanup_package_file_worker_capacity
|
|
end
|
|
|
|
private
|
|
|
|
def after_destroy
|
|
pkg = artifact.package
|
|
|
|
pkg.transaction do
|
|
pkg.destroy if model.for_package_ids(pkg.id).empty?
|
|
end
|
|
end
|
|
|
|
def model
|
|
Packages::PackageFile
|
|
end
|
|
|
|
def next_item
|
|
model.next_pending_destruction(order_by: :id)
|
|
end
|
|
|
|
def log_metadata(package_file)
|
|
log_extra_metadata_on_done(:package_file_id, package_file.id)
|
|
log_extra_metadata_on_done(:package_id, package_file.package_id)
|
|
end
|
|
|
|
def log_cleanup_item(package_file)
|
|
logger.info(
|
|
structured_payload(
|
|
package_id: package_file.package_id,
|
|
package_file_id: package_file.id
|
|
)
|
|
)
|
|
end
|
|
end
|
|
end
|