From 192ce74aafa92a946e00a96140ca684fd7292999 Mon Sep 17 00:00:00 2001
From: Marius Bobin <mbobin@gitlab.com>
Date: Sun, 4 Jun 2023 20:20:58 +0000
Subject: [PATCH] Revert "Merge branch '382033-force-partition-attach' into
 'master'"

This reverts merge request !121554

Changelog: other
---
 .../attach_ci_builds_partition.yml            |   8 --
 lib/gitlab/database/ci_builds_partitioning.rb | 125 ------------------
 lib/tasks/gitlab/db.rake                      |   1 -
 3 files changed, 134 deletions(-)
 delete mode 100644 config/feature_flags/development/attach_ci_builds_partition.yml
 delete mode 100644 lib/gitlab/database/ci_builds_partitioning.rb

diff --git a/config/feature_flags/development/attach_ci_builds_partition.yml b/config/feature_flags/development/attach_ci_builds_partition.yml
deleted file mode 100644
index 44c86dfd6cee..000000000000
--- a/config/feature_flags/development/attach_ci_builds_partition.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: attach_ci_builds_partition
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121554
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382033
-milestone: '16.1'
-type: development
-group: group::pipeline execution
-default_enabled: false
diff --git a/lib/gitlab/database/ci_builds_partitioning.rb b/lib/gitlab/database/ci_builds_partitioning.rb
deleted file mode 100644
index b726157044f2..000000000000
--- a/lib/gitlab/database/ci_builds_partitioning.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
-  module Database
-    class CiBuildsPartitioning
-      include AsyncDdlExclusiveLeaseGuard
-
-      ATTEMPTS = 10
-      LOCK_TIMEOUT = 10.seconds
-      LEASE_TIMEOUT = 35.minutes
-
-      def initialize(logger: Gitlab::AppLogger)
-        @connection = ::Ci::ApplicationRecord.connection
-        @timing_configuration = Array.new(ATTEMPTS) { [LOCK_TIMEOUT, rand((1.minute)..(3.minutes))] }
-        @logger = logger
-      end
-
-      def execute
-        return unless can_execute?
-
-        try_obtain_lease do
-          lock_retries.run(raise_on_exhaustion: true) do
-            connection.execute(partitioning_sql)
-          end
-
-          log_info('Partition attached')
-        end
-
-      rescue WithLockRetries::AttemptsExhaustedError
-        log_info('Failed to attach partition')
-      end
-
-      private
-
-      attr_reader :connection, :timing_configuration, :logger
-
-      def can_execute?
-        return false if process_disabled?
-        return false unless Gitlab.com?
-        return false unless connection.table_exists?(:p_ci_builds)
-
-        if already_attached?
-          log_info('Table already attached')
-
-          return false
-        end
-
-        if vacuum_running?
-          log_info('Autovacuum detected')
-
-          return false
-        end
-
-        true
-      end
-
-      def process_disabled?
-        ::Feature.disabled?(:attach_ci_builds_partition)
-      end
-
-      def already_attached?
-        Gitlab::Database::SharedModel.using_connection(connection) do
-          Gitlab::Database::PostgresPartition
-            .for_parent_table('public.p_ci_builds')
-            .for_identifier('public.ci_builds')
-            .exists?
-        end
-      end
-
-      def vacuum_running?
-        Gitlab::Database::SharedModel.using_connection(connection) do
-          Gitlab::Database::PostgresAutovacuumActivity
-            .for_tables(%i[ci_pipelines ci_stages ci_builds ci_resource_groups])
-            .any?
-        end
-      end
-
-      def lock_retries
-        Gitlab::Database::WithLockRetries.new(
-          timing_configuration: timing_configuration,
-          connection: connection,
-          logger: logger,
-          klass: self.class
-        )
-      end
-
-      def partitioning_sql
-        <<~SQL.squish
-          SET LOCAL statement_timeout TO '11s';
-
-          LOCK ci_pipelines, ci_stages, ci_builds, ci_resource_groups IN ACCESS EXCLUSIVE MODE;
-
-          DROP TRIGGER IF EXISTS ci_builds_loose_fk_trigger ON ci_builds;
-
-          ALTER TABLE p_ci_builds ATTACH PARTITION ci_builds FOR VALUES IN (100);
-
-          ALTER SEQUENCE ci_builds_id_seq OWNED BY p_ci_builds.id;
-          ALTER TABLE p_ci_builds DROP CONSTRAINT partitioning_constraint;
-
-          CREATE TRIGGER ci_builds_loose_fk_trigger
-            AFTER DELETE ON ci_builds
-            REFERENCING OLD TABLE AS old_table
-            FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
-
-          CREATE TRIGGER p_ci_builds_loose_fk_trigger
-            AFTER DELETE ON p_ci_builds
-            REFERENCING OLD TABLE AS old_table
-            FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
-        SQL
-      end
-
-      def log_info(message)
-        logger.info(message: message, class: self.class.to_s)
-      end
-
-      def connection_db_config
-        ::Ci::ApplicationRecord.connection_db_config
-      end
-
-      def lease_timeout
-        LEASE_TIMEOUT
-      end
-    end
-  end
-end
diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake
index c9b02304d292..0c7c1872f1b5 100644
--- a/lib/tasks/gitlab/db.rake
+++ b/lib/tasks/gitlab/db.rake
@@ -241,7 +241,6 @@ namespace :gitlab do
         exit
       end
 
-      Gitlab::Database::CiBuildsPartitioning.new.execute
       Gitlab::Database::Reindexing.invoke
     end
 
-- 
GitLab