Class: Gitlab::Database::Partitioning::CiSlidingListStrategy

Inherits:
SlidingListStrategy show all
Defined in:
lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb

Constant Summary collapse

INITIAL_PARTITION =
100
POSSIBLE_PARTITIONS_PER_EXECUTION =
5

Instance Attribute Summary

Attributes inherited from SlidingListStrategy

#analyze_interval, #detach_partition_if, #model, #next_partition_if, #partitioning_key

Instance Method Summary collapse

Methods inherited from SlidingListStrategy

#initialize, #no_partitions_exist?

Constructor Details

This class inherits a constructor from Gitlab::Database::Partitioning::SlidingListStrategy

Instance Method Details

#active_partitionObject



37
38
39
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 37

def active_partition
  super || initial_partition
end

#after_adding_partitionsObject



31
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 31

def after_adding_partitions; end

#current_partitionsObject



10
11
12
13
14
15
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 10

def current_partitions
  Gitlab::Database::PostgresPartition.for_parent_table(table_name).map do |partition|
    MultipleNumericListPartition.from_sql(table_name, partition.name, partition.condition,
      schema: partition.schema)
  end.sort
end

#extra_partitionsObject



33
34
35
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 33

def extra_partitions
  []
end

#initial_partitionObject



17
18
19
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 17

def initial_partition
  partition_for(INITIAL_PARTITION)
end

#missing_partitionsObject



25
26
27
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 25

def missing_partitions
  desired_partitions - current_partitions
end

#next_partitionObject



21
22
23
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 21

def next_partition
  partition_for(active_partition.values.max + 1)
end

#validate_and_fixObject



29
# File 'lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb', line 29

def validate_and_fix; end