Class: Gitlab::Database::AsyncConstraints::Validators::Base

Inherits:
Object
  • Object
show all
Extended by:
Utils::Override
Includes:
Gitlab::Database::AsyncDdlExclusiveLeaseGuard
Defined in:
lib/gitlab/database/async_constraints/validators/base.rb

Direct Known Subclasses

CheckConstraint, ForeignKey

Constant Summary collapse

TIMEOUT_PER_ACTION =
1.day
STATEMENT_TIMEOUT =
12.hours

Instance Method Summary collapse

Methods included from Utils::Override

extended, extensions, included, method_added, override, prepended, queue_verification, verify!

Methods included from Gitlab::Database::AsyncDdlExclusiveLeaseGuard

#database_config_name, #lease_key

Methods included from ExclusiveLeaseGuard

#exclusive_lease, #lease_key, #lease_release?, #lease_taken_log_level, #lease_taken_message, #log_lease_taken, #release_lease, #renew_lease!, #try_obtain_lease

Constructor Details

#initialize(record) ⇒ Base

Returns a new instance of Base.



14
15
16
# File 'lib/gitlab/database/async_constraints/validators/base.rb', line 14

def initialize(record)
  @record = record
end

Instance Method Details

#performObject



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/gitlab/database/async_constraints/validators/base.rb', line 18

def perform
  try_obtain_lease do
    if constraint_exists?
      log_info('Starting to validate constraint')
      validate_constraint_with_error_handling
      log_info('Finished validating constraint')
    else
      log_info(skip_log_message)
      record.destroy!
    end
  end
end