1. 26 Aug, 2018 1 commit
  2. 16 Aug, 2018 1 commit
  3. 23 Jul, 2018 1 commit
  4. 25 Apr, 2018 1 commit
  5. 07 Feb, 2018 1 commit
  6. 22 Aug, 2017 1 commit
  7. 02 Aug, 2017 1 commit
  8. 28 Jul, 2017 1 commit
    • Z.J. van de Weg's avatar
      Remove Mattermost team with GitLab group · 94357aaa45c5
      Z.J. van de Weg authored
      When destroying a group, now an API call is made to the Mattermost
      server to request the deletion of the project. Actual team deletion on
      the Mattermost side happens async, so the runtime shouldn't increase by
      more than a second.
      94357aaa45c5
  9. 27 Jul, 2017 2 commits
  10. 29 Jun, 2017 1 commit
  11. 19 Apr, 2017 1 commit
  12. 28 Mar, 2017 1 commit
  13. 27 Feb, 2017 1 commit
  14. 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
  15. 08 Feb, 2017 1 commit
  16. 18 Nov, 2016 1 commit
    • Timothy Andrew's avatar
      Write a spec covering the race condition during group deletion. · a99c6664a4fb
      Timothy Andrew authored
      - Use multiple threads / database connections to:
      
        1. Escape the transaction the spec seems to be running
           in (`config.use_transactional_fixtures` is off, but
           `ActiveRecord::Base.connection.open_transactions` is not empty
           at the beginning of the spec.
      
        2. Simulate a Sidekiq worker performing the hard delete outside of the
           soft-delete transaction.
      
      - The spec is a little clunky, but it was the smallest thing I could get
        working - and even this took a couple of hours. Let me know if you
        have any suggestions to improve it!
      a99c6664a4fb
  17. 11 Aug, 2016 1 commit
    • Stan Hu's avatar
      Fix bug where destroying a namespace would not always destroy projects · 4f8fa2dd763b
      Stan Hu authored
      There is a race condition in DestroyGroupService now that projects are deleted asynchronously:
      
      1. User attempts to delete group
      2. DestroyGroupService iterates through all projects and schedules a Sidekiq job to delete each Project
      3. DestroyGroupService destroys the Group, leaving all its projects without a namespace
      4. Projects::DestroyService runs later but the can?(current_user,
         :remove_project) is `false` because the user no longer has permission to
         destroy projects with no namespace.
      5. This leaves the project in pending_delete state with no namespace/group.
      
      Projects without a namespace or group also adds another problem: it's not possible to destroy the container
      registry tags, since container_registry_path_with_namespace is the wrong value.
      
      The fix is to destroy the group asynchronously and to run execute directly on Projects::DestroyService.
      
      Closes #17893
      4f8fa2dd763b
  18. 30 Jun, 2016 1 commit
  19. 09 Dec, 2015 1 commit
  20. 13 Jun, 2015 2 commits
  21. 03 Jun, 2015 1 commit