1. 23 Feb, 2017 1 commit
  2. 21 Feb, 2017 1 commit
  3. 16 Feb, 2017 1 commit
    • Stan Hu's avatar
      Fix a number of race conditions that can occur during namespace deletion · 2c2f45645d45
      Stan Hu authored
      There are two problems in the current implementation:
      
      1. If a project is marked for deletion via the `pending_delete` flag
      and then the namespace was quickly deleted, it's possible that the
      namespace skips over that project and leaves that project in
      an orphaned state.
      
      2. Before namespace deletion, the namespace attempts to clean up
      all the relevant storage paths. However, if all projects have been
      removed synchronously, then the namespace will not be able to clean anything.
      To prevent this, we should load the paths to be deleted before
      actually destroying projects.
      
      The specs were missing this second case due to a permission issue
      that caused project removal never to happen.
      2c2f45645d45
  4. 14 Feb, 2017 1 commit
  5. 08 Feb, 2017 1 commit
  6. 07 Feb, 2017 2 commits
  7. 06 Feb, 2017 4 commits
  8. 03 Feb, 2017 1 commit
  9. 31 Jan, 2017 13 commits
  10. 30 Jan, 2017 1 commit
  11. 27 Jan, 2017 4 commits
  12. 25 Jan, 2017 1 commit
  13. 23 Jan, 2017 1 commit
  14. 15 Jan, 2017 2 commits
  15. 11 Jan, 2017 1 commit
  16. 08 Jan, 2017 1 commit
    • Yorick Peterse's avatar
      Remove the project_authorizations.id column · 969751d02ea0
      Yorick Peterse authored
      This column used to be a 32 bits integer, allowing for only a maximum of
      2 147 483 647 rows. Given enough users one can hit this limit pretty
      quickly, as was the case for GitLab.com.
      
      Changing this type to bigint (= 64 bits) would give us more space, but
      we'd eventually hit the same limit given enough users and projects. A
      much more sustainable solution is to simply drop the "id" column.
      
      There were only 2 lines of code depending on this column being present,
      and neither truly required it to be present. Instead the code now uses
      the "project_id" column combined with the "user_id" column. This means
      that instead of something like this:
      
          DELETE FROM project_authorizations
          WHERE user_id = X
          AND id = Y;
      
      We now run the following when removing rows:
      
          DELETE FROM project_authorizations
          WHERE user_id = X
          AND project_id = Y;
      
      Since both user_id and project_id are indexed this should not slow down
      the DELETE query.
      
      This commit also removes the "dependent: destroy" clause from the
      "project_authorizations" relation in the User and Project models.
      Keeping this prevents Rails from being able to remove data as it relies
      on an "id" column being present. Since the "project_authorizations"
      table has proper foreign keys set up (with cascading removals) we don't
      need to depend on any Rails logic.
      969751d02ea0
  17. 03 Jan, 2017 2 commits
  18. 24 Dec, 2016 2 commits