26 lines
812 B
Ruby
26 lines
812 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module LooseForeignKeys
|
||
|
class CleanupWorker
|
||
|
include ApplicationWorker
|
||
|
include Gitlab::ExclusiveLeaseHelpers
|
||
|
include CronjobQueue # rubocop: disable Scalability/CronWorkerContext
|
||
|
|
||
|
feature_category :sharding
|
||
|
data_consistency :always
|
||
|
idempotent!
|
||
|
|
||
|
def perform
|
||
|
return if Feature.disabled?(:loose_foreign_key_cleanup, default_enabled: :yaml)
|
||
|
|
||
|
ttl = ModificationTracker::MAX_RUNTIME + 1.minute
|
||
|
in_lock(self.class.name.underscore, ttl: ttl, retries: 0) do
|
||
|
# TODO: Iterate over the connections
|
||
|
# https://gitlab.com/gitlab-org/gitlab/-/issues/341513
|
||
|
stats = ProcessDeletedRecordsService.new(connection: ApplicationRecord.connection).execute
|
||
|
log_extra_metadata_on_done(:stats, stats)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|