• Yorick Peterse's avatar
    Smarter refreshing of authorized projects · f73193c3
    Yorick Peterse authored
    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
    f73193c3
user.rb 28.5 KB