Class: Gitlab::Database::TruncatePartition
- Inherits:
-
Object
- Object
- Gitlab::Database::TruncatePartition
- Defined in:
- lib/gitlab/database/truncate_partition.rb
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(partition_name, target_database: nil, logger: Logger.new($stdout)) ⇒ TruncatePartition
constructor
A new instance of TruncatePartition.
Constructor Details
#initialize(partition_name, target_database: nil, logger: Logger.new($stdout)) ⇒ TruncatePartition
Returns a new instance of TruncatePartition.
6 7 8 9 10 |
# File 'lib/gitlab/database/truncate_partition.rb', line 6 def initialize(partition_name, target_database: nil, logger: Logger.new($stdout)) @partition_name = partition_name @target_database = target_database @logger = logger end |
Instance Method Details
#execute ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gitlab/database/truncate_partition.rb', line 12 def execute unless allowed_partition? log("#{partition_name} is not listed as one of the allowed partitions, " \ "only #{allowed_partitions.keys.join(', ')} allowed") return false end success = true EachDatabase.each_connection(only: target_database) do |connection, database_name| partition_data = TaskHelpers.get_partition_info(partition_name, connection) if partition_data.nil? log("Partition #{partition_name} not present on #{database_name}") next end if partition_data['is_attached'] log("Partition #{partition_name} is still attached on #{database_name}. Detach before truncating.") success = false next end truncate(connection, partition_data, database_name) end success end |