Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20200909161624_cleanup_group_import_states_with_null_user_id.rb')
-rw-r--r--db/post_migrate/20200909161624_cleanup_group_import_states_with_null_user_id.rb80
1 files changed, 0 insertions, 80 deletions
diff --git a/db/post_migrate/20200909161624_cleanup_group_import_states_with_null_user_id.rb b/db/post_migrate/20200909161624_cleanup_group_import_states_with_null_user_id.rb
deleted file mode 100644
index f956da81528..00000000000
--- a/db/post_migrate/20200909161624_cleanup_group_import_states_with_null_user_id.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-# frozen_string_literal: true
-
-class CleanupGroupImportStatesWithNullUserId < ActiveRecord::Migration[6.0]
- include Gitlab::Database::MigrationHelpers
-
- # With BATCH_SIZE=1000 and group_import_states.count=600 on GitLab.com
- # - 1 iteration will be run
- # - each batch requires on average ~2500ms
- # - 600 rows require on average ~1500ms
- # Expected total run time: ~2500ms
- BATCH_SIZE = 1000
-
- disable_ddl_transaction!
-
- class User < ActiveRecord::Base
- self.table_name = 'users'
- end
-
- class Namespace < ActiveRecord::Base
- self.table_name = 'namespaces'
-
- belongs_to :owner, class_name: 'CleanupGroupImportStatesWithNullUserId::User'
- end
-
- class Member < ActiveRecord::Base
- self.table_name = 'members'
- self.inheritance_column = :_type_disabled
-
- belongs_to :user, class_name: 'CleanupGroupImportStatesWithNullUserId::User'
- end
-
- class Group < Namespace
- OWNER = 50
-
- self.inheritance_column = :_type_disabled
-
- def default_owner
- owners.first || parent&.default_owner || owner
- end
-
- def parent
- Group.find_by_id(parent_id)
- end
-
- def owners
- Member.where(type: 'GroupMember', source_type: 'Namespace', source_id: id, requested_at: nil, access_level: OWNER).map(&:user)
- end
- end
-
- class GroupImportState < ActiveRecord::Base
- include ::EachBatch
-
- self.table_name = 'group_import_states'
-
- belongs_to :group, class_name: 'CleanupGroupImportStatesWithNullUserId::Group'
- belongs_to :user, class_name: 'CleanupGroupImportStatesWithNullUserId::User'
- end
-
- def up
- User.reset_column_information
- Namespace.reset_column_information
- Member.reset_column_information
- Group.reset_column_information
- GroupImportState.reset_column_information
-
- GroupImportState.each_batch(of: BATCH_SIZE) do |batch|
- batch.each do |group_import_state|
- owner_id = Group.find_by_id(group_import_state.group_id)&.default_owner&.id
-
- group_import_state.update!(user_id: owner_id) if owner_id
- end
- end
-
- GroupImportState.where(user_id: nil).delete_all
- end
-
- def down
- # no-op : can't go back to `NULL` without first dropping the `NOT NULL` constraint
- end
-end