Enable keyset pagination ':id/registry/repositories/:repository_id/tags' for self-managed
Background
Currently, the API endpoint for listing registry repository tags does not support keyset pagination for self-managed GitLab instances. Keyset pagination is a more efficient method to improve performance and user experience, especially when dealing with large datasets.
Objective
This issue aims to implement keyset pagination for the ':id/registry/repositories/:repository_id/tags' endpoint in self-managed GitLab instances. This will align the functionality with GitLab.com and provide a more consistent experience across all GitLab deployments.
Current Status
- Keyset pagination is available on GitLab.com but not for self-managed instances.
- The current API documentation for this endpoint can be found here: https://docs.gitlab.com/ee/api/container_registry.html#list-registry-repository-tags
Implementation Details
- Update the backend API to support keyset pagination for self-managed instances.
- Ensure the implementation is consistent with the existing keyset pagination on GitLab.com.
- Update the API documentation to reflect the changes for self-managed instances.
- Add appropriate feature flags or database-enabled controls to manage the rollout.
Acceptance Criteria
-
Keyset pagination is functional for the ':id/registry/repositories/:repository_id/tags' endpoint on self-managed GitLab instances. -
The implementation passes all relevant tests. -
API documentation is updated to reflect the changes. -
Performance tests show improved efficiency compared to offset-based pagination.
Related Information
- This feature is part of the Container Registry group's efforts to improve API performance and consistency.
- The implementation should follow the "Container Registry Self-Managed Rollout::Enabled by Database" approach.
Additional Notes
- Consider any potential impacts on existing integrations or scripts that rely on the current pagination method.
- Coordinate with the documentation team to ensure clear communication of the changes to users.
References
Edited by Tim Rizzi