f73193c328
Prior to this commit the refreshing of authorized projects was done in two steps: 1. Remove existing authorizations 2. Insert a new list of all authorizations This can lead to a high amount of dead tuples as every time all rows are being replaced. For example, if a user with 100 authorizations is given access to a new project this would lead to: * 100 rows being removed * 101 new rows being inserted This commit changes the way this system works so it only removes/inserts what is necessary. Using the above example this would lead to only 1 new row being inserted, with the initial 100 being left untouched. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/25257
14 lines
322 B
Ruby
14 lines
322 B
Ruby
class AuthorizedProjectsWorker
|
|
include Sidekiq::Worker
|
|
include DedicatedSidekiqQueue
|
|
|
|
def self.bulk_perform_async(args_list)
|
|
Sidekiq::Client.push_bulk('class' => self, 'args' => args_list)
|
|
end
|
|
|
|
def perform(user_id)
|
|
user = User.find_by(id: user_id)
|
|
|
|
user.refresh_authorized_projects if user
|
|
end
|
|
end
|