Skip to content

Performance issue on adding user to team #8479

Closed
@davidsvantesson

Description

@davidsvantesson
  • Gitea version (or commit ref): 1.9.4 (also 1.10.0+dev-414-gf1fdd782d)
  • Git version: not relevant
  • Operating system: ubuntu 18.04
  • Database (use [x]):
    • PostgreSQL
    • MySQL
    • MSSQL
    • SQLite
  • Can you reproduce the bug at https://try.gitea.io:
    • Yes (provide example URL)
    • No
    • Not relevant
  • Log gist:

Description

With the combination of many users and many repositories in a team, it can take very long time to add a single new team member. Example adding one user to team with ~100 members x 100 repositories: 160 seconds.

When adding a new team members the function recalculateTeamAccesses is run over all team's repositories. This function has to go through all collaborators and teams for the repository. So the time for adding a repository is something in the order of O(teams:users*repositories). It should be possible to only recalculate the access of the specific user that was added (or deleted) to the team for each repository, only giving O(repositories).

Metadata

Metadata

Assignees

No one assigned

    Labels

    type/enhancementAn improvement of existing functionality

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions