Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Edit Group" page always requests all member subgroups and EPersons. This has bad performance for large groups. #2512

Closed
tdonohue opened this issue Sep 21, 2023 · 0 comments · Fixed by DSpace/DSpace#9125 or #2545
Assignees
Labels
authorization related to authorization, permissions or groups bug high priority
Milestone

Comments

@tdonohue
Copy link
Member

Describe the bug
Related to DSpace/DSpace#9052

"Edit Group" page always requests all member subgroups and EPersons. This has bad performance for large groups.

The Angular UI includes code which requests every EPerson in a Group or every Subgroup in a Group in order to determine whether a given EPerson or Group is already included in a given parent Group.

For example:

This behavior is used to determine whether to display a Remove or Add button in the "Add EPeople" and "Add Subgroups" section of the "Edit Group" page. See circled content below.

image

To Reproduce
Steps to reproduce the behavior:

  1. Login as an Admin. Open your browser's DevTools
  2. Go to Access Control and click on Groups.
  3. Edit a Group that has members (either EPerson or SubGroup)
  4. Verify your DevTools shows a request similar to one of these:
    • /server/api/eperson/groups/[uuid]/epersons?page=0&size=9999 (if the group you are editing has Eperson members)
    • /server/api/eperson/groups/[uuid]/subgroups?page=0&size=9999 (if the group you are editing has subgroup members)

The size=9999 tells the REST API to return up to 9,999 results on the first page. This essentially disables pagination, unless there are 10,000 or more results.

Expected behavior
The User Interface should never send a request to load all objects at once. This should be redesigned to no longer need to load every object at once.

Related work
Directly related to DSpace/DSpace#9052 (However, this ticket describes improper behavior in dspace-angular, while 9052 describes improper behavior in the backend)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment