Class: LooseForeignKeys::BatchCleanerService
- Inherits:
-
Object
- Object
- LooseForeignKeys::BatchCleanerService
- Defined in:
- app/services/loose_foreign_keys/batch_cleaner_service.rb
Constant Summary collapse
- CLEANUP_ATTEMPTS_BEFORE_RESCHEDULE =
3
- CONSUME_AFTER_RESCHEDULE =
5.minutes
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(parent_table:, loose_foreign_key_definitions:, deleted_parent_records:, connection:, logger: Sidekiq.logger, modification_tracker: LooseForeignKeys::ModificationTracker.new) ⇒ BatchCleanerService
constructor
A new instance of BatchCleanerService.
Constructor Details
#initialize(parent_table:, loose_foreign_key_definitions:, deleted_parent_records:, connection:, logger: Sidekiq.logger, modification_tracker: LooseForeignKeys::ModificationTracker.new) ⇒ BatchCleanerService
Returns a new instance of BatchCleanerService.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/services/loose_foreign_keys/batch_cleaner_service.rb', line 8 def initialize( parent_table:, loose_foreign_key_definitions:, deleted_parent_records:, connection:, logger: Sidekiq.logger, modification_tracker: LooseForeignKeys::ModificationTracker.new ) @parent_table = parent_table @loose_foreign_key_definitions = loose_foreign_key_definitions @deleted_parent_records = deleted_parent_records @modification_tracker = modification_tracker @connection = connection @logger = logger @deleted_records_counter = Gitlab::Metrics.counter( :loose_foreign_key_processed_deleted_records, 'The number of processed loose foreign key deleted records' ) @deleted_records_rescheduled_count = Gitlab::Metrics.counter( :loose_foreign_key_rescheduled_deleted_records, 'The number of rescheduled loose foreign key deleted records' ) @deleted_records_incremented_count = Gitlab::Metrics.counter( :loose_foreign_key_incremented_deleted_records, 'The number of loose foreign key deleted records with incremented cleanup_attempts' ) end |
Instance Method Details
#execute ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/services/loose_foreign_keys/batch_cleaner_service.rb', line 36 def execute loose_foreign_key_definitions.each do |loose_foreign_key_definition| run_cleaner_service(loose_foreign_key_definition, with_skip_locked: true) if modification_tracker.over_limit? handle_over_limit break end run_cleaner_service(loose_foreign_key_definition, with_skip_locked: false) if modification_tracker.over_limit? handle_over_limit break end end return if modification_tracker.over_limit? # At this point, all associations are cleaned up, we can update the status of the parent records update_count = Gitlab::Database::SharedModel.using_connection(connection) do LooseForeignKeys::DeletedRecord.mark_records_processed(deleted_parent_records) end deleted_records_counter.increment({ table: parent_table, db_config_name: db_config_name }, update_count) end |