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 'app/services')
-rw-r--r--app/services/merge_requests/update_assignees_service.rb13
-rw-r--r--app/services/notes/create_service.rb2
-rw-r--r--app/services/users/migrate_to_ghost_user_service.rb113
3 files changed, 3 insertions, 125 deletions
diff --git a/app/services/merge_requests/update_assignees_service.rb b/app/services/merge_requests/update_assignees_service.rb
index 79a3e9f3c22..d45d55cbebc 100644
--- a/app/services/merge_requests/update_assignees_service.rb
+++ b/app/services/merge_requests/update_assignees_service.rb
@@ -19,16 +19,9 @@ module MergeRequests
attrs = update_attrs.merge(assignee_ids: new_ids)
- # We now have assignees validation on merge request
- # If we use an update with bang, it will explode,
- # instead we need to check if its valid then return if its not valid.
- if Feature.enabled?(:limit_assignees_per_issuable)
- merge_request.update(**attrs)
-
- return merge_request unless merge_request.valid?
- else
- merge_request.update!(**attrs)
- end
+ merge_request.update(**attrs)
+
+ return merge_request unless merge_request.valid?
# Defer the more expensive operations (handle_assignee_changes) to the background
MergeRequests::HandleAssigneesChangeService
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb
index 1aaf7fb769a..555d60dc291 100644
--- a/app/services/notes/create_service.rb
+++ b/app/services/notes/create_service.rb
@@ -137,8 +137,6 @@ module Notes
end
def invalid_assignees?(update_params)
- return false unless Feature.enabled?(:limit_assignees_per_issuable)
-
if update_params.key?(:assignee_ids)
possible_assignees = update_params[:assignee_ids]&.uniq&.size
diff --git a/app/services/users/migrate_to_ghost_user_service.rb b/app/services/users/migrate_to_ghost_user_service.rb
deleted file mode 100644
index 3eb220c0e40..00000000000
--- a/app/services/users/migrate_to_ghost_user_service.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-# frozen_string_literal: true
-
-# When a user is destroyed, some of their associated records are
-# moved to a "Ghost User", to prevent these associated records from
-# being destroyed.
-#
-# For example, all the issues/MRs a user has created are _not_ destroyed
-# when the user is destroyed.
-module Users
- class MigrateToGhostUserService
- extend ActiveSupport::Concern
-
- attr_reader :ghost_user, :user, :hard_delete
-
- def initialize(user)
- @user = user
- @ghost_user = User.ghost
- end
-
- # If an admin attempts to hard delete a user, in some cases associated
- # records may have a NOT NULL constraint on the user ID that prevent that record
- # from being destroyed. In such situations we must assign the record to the ghost user.
- # Passing in `hard_delete: true` will ensure these records get assigned to
- # the ghost user before the user is destroyed. Other associated records will be destroyed.
- # letting the other associated records be destroyed.
- def execute(hard_delete: false)
- @hard_delete = hard_delete
- transition = user.block_transition
-
- # Block the user before moving records to prevent a data race.
- # For example, if the user creates an issue after `migrate_issues`
- # runs and before the user is destroyed, the destroy will fail with
- # an exception.
- user.block
-
- begin
- user.transaction do
- migrate_records
- end
- rescue Exception # rubocop:disable Lint/RescueException
- # Reverse the user block if record migration fails
- if transition
- transition.rollback
- user.save!
- end
-
- raise
- end
-
- user.reset
- end
-
- private
-
- def migrate_records
- return if hard_delete
-
- migrate_issues
- migrate_merge_requests
- migrate_notes
- migrate_abuse_reports
- migrate_award_emoji
- migrate_snippets
- migrate_reviews
- end
-
- # rubocop: disable CodeReuse/ActiveRecord
- def migrate_issues
- batched_migrate(Issue, :author_id)
- batched_migrate(Issue, :last_edited_by_id)
- end
- # rubocop: enable CodeReuse/ActiveRecord
-
- # rubocop: disable CodeReuse/ActiveRecord
- def migrate_merge_requests
- batched_migrate(MergeRequest, :author_id)
- batched_migrate(MergeRequest, :merge_user_id)
- end
- # rubocop: enable CodeReuse/ActiveRecord
-
- def migrate_notes
- batched_migrate(Note, :author_id)
- end
-
- def migrate_abuse_reports
- user.reported_abuse_reports.update_all(reporter_id: ghost_user.id)
- end
-
- def migrate_award_emoji
- user.award_emoji.update_all(user_id: ghost_user.id)
- end
-
- def migrate_snippets
- snippets = user.snippets.only_project_snippets
- snippets.update_all(author_id: ghost_user.id)
- end
-
- def migrate_reviews
- batched_migrate(Review, :author_id)
- end
-
- # rubocop:disable CodeReuse/ActiveRecord
- def batched_migrate(base_scope, column, batch_size: 50)
- loop do
- update_count = base_scope.where(column => user.id).limit(batch_size).update_all(column => ghost_user.id)
- break if update_count == 0
- end
- end
- # rubocop:enable CodeReuse/ActiveRecord
- end
-end
-
-Users::MigrateToGhostUserService.prepend_mod_with('Users::MigrateToGhostUserService')