1. 24 Feb, 2017 2 commits
    • Timothy Andrew's avatar
      Implement final review comments from @DouweM and @rymai · f2ed82fa
      Timothy Andrew authored
      - Have `Uniquify` take a block instead of a Proc/function. This is more
        idiomatic than passing around a function in Ruby.
      
      - Block a user before moving their issues to the ghost user. This avoids a data
        race where an issue is created after the issues are migrated to the ghost user,
        and before the destroy takes place.
      
      - No need to migrate issues (to the ghost user) in a transaction, because
        we're using `update_all`
      
      - Other minor changes
      f2ed82fa
    • Timothy Andrew's avatar
      Extract code from `Namespace#clean_path` for ghost user generation. · ca16c373
      Timothy Andrew authored
      1. Create a `Uniquify` class, which generalizes the process of generating unique
         strings, by accepting a function that defines what "uniqueness" means in a
         given context.
      
      2. WIP: Make sure tests for `Namespace` pass, add more if necessary.
      
      3. WIP: Add tests for `Uniquify`
      ca16c373
  2. 23 Feb, 2017 4 commits
  3. 20 Feb, 2017 1 commit
    • Z.J. van de Weg's avatar
      Transactional mattermost team creation · 444d71e0
      Z.J. van de Weg authored
      Before this commit, but still on this feature branch, the creation of
      mattermost teams where a background job. However, it was decided it was
      better that these happened as transaction so feedback could be displayed
      to the user.
      444d71e0
  4. 16 Feb, 2017 1 commit
    • Stan Hu's avatar
      Fix a number of race conditions that can occur during namespace deletion · 6606a450
      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.
      6606a450
  5. 08 Feb, 2017 2 commits
  6. 07 Feb, 2017 1 commit
    • Yorick Peterse's avatar
      Refresh authorizations when transferring projects · ebae3839
      Yorick Peterse authored
      This ensures that project authorizations are refreshed when moving a
      project from one namespace to another. When doing so the permissions for
      all users of both the old and new namespaces are refreshed.
      
      See #26194 for more information.
      ebae3839
  7. 31 Jan, 2017 1 commit
  8. 25 Jan, 2017 1 commit
  9. 23 Jan, 2017 1 commit
  10. 20 Jan, 2017 1 commit
  11. 13 Jan, 2017 1 commit
  12. 21 Dec, 2016 1 commit
    • Markus Koller's avatar
      Add more storage statistics · 3ef4f74b
      Markus Koller authored
      This adds counters for build artifacts and LFS objects, and moves
      the preexisting repository_size and commit_count from the projects
      table into a new project_statistics table.
      
      The counters are displayed in the administration area for projects
      and groups, and also available through the API for admins (on */all)
      and normal users (on */owned)
      
      The statistics are updated through ProjectCacheWorker, which can now
      do more granular updates with the new :statistics argument.
      3ef4f74b
  13. 20 Dec, 2016 1 commit
  14. 15 Dec, 2016 1 commit
  15. 13 Dec, 2016 2 commits
  16. 12 Dec, 2016 1 commit
  17. 08 Dec, 2016 1 commit
  18. 06 Dec, 2016 1 commit
  19. 24 Nov, 2016 1 commit
  20. 23 Nov, 2016 1 commit
  21. 07 Oct, 2016 2 commits
    • Will Starms's avatar
      Correct namespace validation to forbid bad names #21077 · 4f1de5fa
      Will Starms authored
      Adds .git and .atom to the master namespace regex
      Updates existing group tests and adds two new ones
      Updates path cleaning to also forbid .atom
      4f1de5fa
    • Nick Thomas's avatar
      Add markdown cache columns to the database, but don't use them yet · e94cd6fd
      Nick Thomas authored
      This commit adds a number of _html columns and, with the exception of Note,
      starts updating them whenever the content of their partner fields changes.
      
      Note has a collision with the note_html attr_accessor; that will be fixed later
      
      A background worker for clearing these cache columns is also introduced - use
      `rake cache:clear` to set it off. You can clear the database or Redis caches
      separately by running `rake cache:clear:db` or `rake cache:clear:redis`,
      respectively.
      e94cd6fd
  22. 15 Sep, 2016 1 commit
  23. 12 Aug, 2016 1 commit
    • Stan Hu's avatar
      Fix bug where destroying a namespace would not always destroy projects · cb8a425b
      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
      cb8a425b
  24. 30 Jun, 2016 1 commit
  25. 03 Jun, 2016 2 commits
  26. 13 May, 2016 1 commit
  27. 12 May, 2016 1 commit
  28. 09 May, 2016 2 commits
  29. 06 May, 2016 1 commit
  30. 11 Mar, 2016 1 commit
  31. 06 Jan, 2016 1 commit