Add paging support to site wide rest apis (/subjects & /experiments) - make configurable

Description

On larger servers, the /subjects and /experiments queries take several minutes to return. When executed multiple times, it ties up a database connection for a long time. If its run several times, it can lock up a server by tying up all of its db connections.

Additionally, returning millions of rows at a time is generally unusable.

To prevent this we will add paging to these rest calls. And we will add a site configuration property to determine if the calls should default to paging or not. The default will be ‘not’, to stay consistent with prior behavior. But, for larger servers, they will be able to change the default to paging ‘on’ to prevent accidental DoS.

Additionally, the corresponding project-level listings (/data/projects/x/subjects & /data/projects/x/experiments) will be modified to support paging, though their default behavior will not be modifiable, as portions of the app are dependent on them returning all rows by default. We may need to revisit this to support single projects with millions of rows, but that will require refactoring of several UI components.

Environment

None

QA Notes

None

Activity

Show:
Done
Pinned fields
Click on the next to a field label to start pinning.

Details

Assignee

Reporter

Labels

Product Team

Core

Components

Sprint

Fix versions

Priority

More fields

Zendesk Support

Clockify

Created April 4, 2023 at 4:50 PM
Updated November 16, 2023 at 5:09 PM
Resolved May 17, 2023 at 3:17 PM