diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index c2425e9460add68aa9a4fa2a02a11285f1bb5a8a..3761aa81bf7464e1d091c6917636e28c22c1eaa6 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -9,16 +9,19 @@ class CommitStatus < Ci::ApplicationRecord include BulkInsertableAssociations include TaggableQueries - ROUTING_FEATURE_FLAG = :ci_partitioning_use_ci_builds_routing_table + def self.switch_table_names + if Gitlab::Utils.to_boolean(ENV['USE_CI_BUILDS_ROUTING_TABLE']) + :p_ci_builds + else + :ci_builds + end + end - self.table_name = 'ci_builds' - self.sequence_name = 'ci_builds_id_seq' + self.table_name = self.switch_table_names + self.sequence_name = :ci_builds_id_seq self.primary_key = :id - partitionable scope: :pipeline, through: { - table: :p_ci_builds, - flag: ROUTING_FEATURE_FLAG - } + partitionable scope: :pipeline belongs_to :user belongs_to :project diff --git a/config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml b/config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml deleted file mode 100644 index 97bacb21e384b4ac1a1aa68baad8060ca03197d0..0000000000000000000000000000000000000000 --- a/config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: ci_partitioning_use_ci_builds_routing_table -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122919 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/421180 -milestone: '16.3' -type: development -group: group::pipeline execution -default_enabled: false diff --git a/db/docs/p_ci_builds.yml b/db/docs/p_ci_builds.yml index 757d609dd4b8c7067f1580a0204ea88a1c076900..ca01e89de09aa95ab1a49a3c9cd11a94d2844cd5 100644 --- a/db/docs/p_ci_builds.yml +++ b/db/docs/p_ci_builds.yml @@ -2,15 +2,10 @@ table_name: p_ci_builds classes: - Ci::Bridge -- Ci::Bridge::Partitioned - Ci::Build -- Ci::Build::Partitioned - Ci::Processable -- Ci::Processable::Partitioned - CommitStatus -- CommitStatus::Partitioned - GenericCommitStatus -- GenericCommitStatus::Partitioned feature_categories: - continuous_integration description: Routing table for ci_builds diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index fea3c5b77a130174384eb8dabf06db7fd40eca97..15298888f3e52a8e6b71d20084d1081576a335db 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -236,23 +236,18 @@ IGNORED_LIMIT_ENUMS = { 'Analytics::CycleAnalytics::Stage' => %w[start_event_identifier end_event_identifier], 'Ci::Bridge' => %w[failure_reason], - 'Ci::Bridge::Partitioned' => %w[failure_reason], 'Ci::Build' => %w[failure_reason], - 'Ci::Build::Partitioned' => %w[failure_reason], 'Ci::BuildMetadata' => %w[timeout_source], 'Ci::BuildTraceChunk' => %w[data_store], 'Ci::DailyReportResult' => %w[param_type], 'Ci::JobArtifact' => %w[file_type], 'Ci::Pipeline' => %w[source config_source failure_reason], 'Ci::Processable' => %w[failure_reason], - 'Ci::Processable::Partitioned' => %w[failure_reason], 'Ci::Runner' => %w[access_level], 'Ci::Stage' => %w[status], 'Clusters::Cluster' => %w[platform_type provider_type], 'CommitStatus' => %w[failure_reason], - 'CommitStatus::Partitioned' => %w[failure_reason], 'GenericCommitStatus' => %w[failure_reason], - 'GenericCommitStatus::Partitioned' => %w[failure_reason], 'InternalId' => %w[usage], 'List' => %w[list_type], 'NotificationSetting' => %w[level], @@ -284,7 +279,6 @@ "ApplicationSetting" => %w[repository_storages_weighted], "AlertManagement::Alert" => %w[payload], "Ci::BuildMetadata" => %w[config_options config_variables], - "Ci::BuildMetadata::Partitioned" => %w[config_options config_variables id_tokens runtime_runner_features secrets], "ExperimentSubject" => %w[context], "ExperimentUser" => %w[context], "Geo::Event" => %w[payload], diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 15f31d98d980500a6e3a5a69ba323c66d0db1645..01fe5a46fd92f92f861d3fe4a8be96cbe104e269 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -5649,26 +5649,4 @@ def run_job_without_exception end end end - - describe 'routing table switch' do - context 'with ff disabled' do - before do - stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: false) - end - - it 'uses the legacy table' do - expect(described_class.table_name).to eq('ci_builds') - end - end - - context 'with ff enabled' do - before do - stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: true) - end - - it 'uses the routing table' do - expect(described_class.table_name).to eq('p_ci_builds') - end - end - end end diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb index 9ce9f0e13b59941d5d15191331b00bfc2d8394c2..e9257b08bca31bdaf72dcc46c098fd3c425d946e 100644 --- a/spec/models/commit_status_spec.rb +++ b/spec/models/commit_status_spec.rb @@ -44,6 +44,24 @@ def create_status(**opts) it { is_expected.not_to be_retried } it { expect(described_class.primary_key).to eq('id') } + describe '.switch_table_names' do + before do + stub_env('USE_CI_BUILDS_ROUTING_TABLE', flag_value) + end + + context 'with the env flag disabled' do + let(:flag_value) { 'false' } + + it { expect(described_class.switch_table_names).to eq(:ci_builds) } + end + + context 'with the env flag enabled' do + let(:flag_value) { 'true' } + + it { expect(described_class.switch_table_names).to eq(:p_ci_builds) } + end + end + describe '#author' do subject { commit_status.author } @@ -1067,26 +1085,4 @@ def create_status(**opts) it_behaves_like 'having enum with nil value' end - - describe 'routing table switch' do - context 'with ff disabled' do - before do - stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: false) - end - - it 'uses the legacy table' do - expect(described_class.table_name).to eq('ci_builds') - end - end - - context 'with ff enabled' do - before do - stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: true) - end - - it 'uses the routing table' do - expect(described_class.table_name).to eq('p_ci_builds') - end - end - end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e7afa3dedd56c6516388a0b25f1a2f26b0a9448d..6ebf77bdccd794609cf3289937e90cb1515ef25d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -24,6 +24,7 @@ ENV["RAILS_ENV"] = 'test' ENV["IN_MEMORY_APPLICATION_SETTINGS"] = 'true' ENV["RSPEC_ALLOW_INVALID_URLS"] = 'true' +ENV['USE_CI_BUILDS_ROUTING_TABLE'] = 'true' require_relative '../config/environment'