Context: we're battling performance issues caused by job listings from user with a lot of jobs, so we're looking into implementing/improving pagination of job listings.
Some notes about what the spec currently states about pagination of job listings:
GET /logs
Lists all batch jobs submitted by a user
...
query param limit:
This parameter enables pagination
Pagination is OPTIONAL: back-ends or clients may not support it. Therefore it MUST be implemented in a way that clients not supporting pagination get all resources regardless. Back-ends not supporting pagination MUST return all resources
In nutshell: pagination is optional and should be opt-in from client side (by setting limit param).
I'm afraid however (as we currently see in practice) that this is not a sustainable behavior: the backend must also be able to limit the job listing and enable pagination. It's not uncommon for larger use cases to have users with multiple thousands of jobs, and fetching all the related metadata/status of all these jobs regularly is quite expensive, especially as most users just look at, say the last 10 jobs anyway.
Some more concrete questions:
- is there any wiggle room to finetune the spec to also allow the backend to enable pagination in some way?
- what should a backend do, under existing spec, if they want to enable pagination even if user/client didn't use
limit? There doesn't seem like a solution that is both pragmatic and follows the spec to the letter.
- E.g. can a backend use a default
limit value, e.g. 100, which is different from "unset by default" in the spec?
- Raise an error if user has too much jobs
Context: we're battling performance issues caused by job listings from user with a lot of jobs, so we're looking into implementing/improving pagination of job listings.
Some notes about what the spec currently states about pagination of job listings:
In nutshell: pagination is optional and should be opt-in from client side (by setting
limitparam).I'm afraid however (as we currently see in practice) that this is not a sustainable behavior: the backend must also be able to limit the job listing and enable pagination. It's not uncommon for larger use cases to have users with multiple thousands of jobs, and fetching all the related metadata/status of all these jobs regularly is quite expensive, especially as most users just look at, say the last 10 jobs anyway.
Some more concrete questions:
limit? There doesn't seem like a solution that is both pragmatic and follows the spec to the letter.limitvalue, e.g. 100, which is different from "unset by default" in the spec?