Module: Gitlab::Database::Partitioning
- Defined in:
- lib/gitlab/database/partitioning.rb,
lib/gitlab/database/partitioning/base_strategy.rb,
lib/gitlab/database/partitioning/replace_table.rb,
lib/gitlab/database/partitioning/time_partition.rb,
lib/gitlab/database/partitioning/partition_manager.rb,
lib/gitlab/database/partitioning/int_range_strategy.rb,
lib/gitlab/database/partitioning/list/convert_table.rb,
lib/gitlab/database/partitioning/time/base_strategy.rb,
lib/gitlab/database/partitioning/int_range_partition.rb,
lib/gitlab/database/partitioning/time/daily_strategy.rb,
lib/gitlab/database/partitioning/partition_monitoring.rb,
lib/gitlab/database/partitioning/sliding_list_strategy.rb,
lib/gitlab/database/partitioning/time/monthly_strategy.rb,
lib/gitlab/database/partitioning/ci_sliding_list_strategy.rb,
lib/gitlab/database/partitioning/detached_partition_dropper.rb,
lib/gitlab/database/partitioning/list/locking_configuration.rb,
lib/gitlab/database/partitioning/single_numeric_list_partition.rb,
lib/gitlab/database/partitioning/with_partitioning_lock_retries.rb,
lib/gitlab/database/partitioning/multiple_numeric_list_partition.rb
Defined Under Namespace
Modules: List, Time
Classes: BaseStrategy, CiSlidingListStrategy, DetachedPartitionDropper, IntRangePartition, IntRangeStrategy, MultipleNumericListPartition, PartitionManager, PartitionMonitoring, ReplaceTable, SingleNumericListPartition, SlidingListStrategy, TableWithoutModel, TimePartition, WithPartitioningLockRetries
Class Method Summary
collapse
Class Method Details
.clear_registered_models ⇒ Object
19
20
21
|
# File 'lib/gitlab/database/partitioning.rb', line 19
def clear_registered_models
@registered_models = Set.new
end
|
.clear_registered_tables ⇒ Object
27
28
29
|
# File 'lib/gitlab/database/partitioning.rb', line 27
def clear_registered_tables
@registered_tables = Set.new
end
|
.drop_detached_partitions ⇒ Object
.register_models(models) ⇒ Object
11
12
13
14
15
16
17
|
# File 'lib/gitlab/database/partitioning.rb', line 11
def register_models(models)
models.each do |model|
raise "#{model} should have partitioning strategy defined" unless model.respond_to?(:partitioning_strategy)
registered_models << model
end
end
|
.register_tables(tables) ⇒ Object
23
24
25
|
# File 'lib/gitlab/database/partitioning.rb', line 23
def register_tables(tables)
registered_tables.merge(tables)
end
|
.registered_models ⇒ Object
92
93
94
|
# File 'lib/gitlab/database/partitioning.rb', line 92
def registered_models
@registered_models ||= Set.new
end
|
.registered_tables ⇒ Object
96
97
98
|
# File 'lib/gitlab/database/partitioning.rb', line 96
def registered_tables
@registered_tables ||= Set.new
end
|
.report_metrics(models_to_monitor = registered_models) ⇒ Object
.sync_partitions(models_to_sync = registered_for_sync, only_on: nil, analyze: true, owner_db_only: Rails.env.production?) ⇒ Object
.sync_partitions_ignore_db_error(analyze: false) ⇒ Object
31
32
33
34
35
|
# File 'lib/gitlab/database/partitioning.rb', line 31
def sync_partitions_ignore_db_error(analyze: false)
sync_partitions(analyze: analyze) unless ENV['DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP']
rescue ActiveRecord::ActiveRecordError, PG::Error
end
|