Increase virtual registry rate limit default to 4000
🗜️ Context
In !185280 (merged), we introduced a rate limit for virtual registries Client APIs.
See !185280 (merged)
This MR bumps that limit to 4000 / 15 secs (up from 1000 / 15 secs). For the reasoning here, see #588754 (comment 3058747520) (internal)
🤔 What does this MR do and why?
- Update setting
virtual_registries_endpoints_api_limitdefault value to4000 - Update the related specs
Worth noting here that virtual registries are still behind feature flag s. Some artifact formats are enabled by default and others are still in work in progress
📖 References
🪜 Screenshots or screen recordings
No UI changes
🧑🔬 How to set up and validate locally
This MR doesn't change how the setting is read, applied or updated. We are merely updating the default value.
If you still want to test these parts, you can follow !185280 (merged).
🏎️ MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Database review
postgres.ai setup
exec UPDATE application_settings
SET rate_limits = jsonb_set(rate_limits, '{virtual_registries_endpoints_api_limit}', '1000')UPDATE application_settings
SET rate_limits = jsonb_set(rate_limits, '{virtual_registries_endpoints_api_limit}', '4000')
WHERE rate_limits->>'virtual_registries_endpoints_api_limit' = '1000';https://console.postgres.ai/gitlab/gitlab-production-main/sessions/49981/commands/148567
⬆️ Migration up
$ rails db:migrate
main: == [advisory_lock_connection] object_id: 137680, pg_backend_pid: 6605
main: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: migrating ==
main: -- execute("UPDATE application_settings\nSET rate_limits = jsonb_set(rate_limits, '{virtual_registries_endpoints_api_limit}', '4000')\nWHERE rate_limits->>'virtual_registries_endpoints_api_limit' = '1000'\n")
main: -> 0.0502s
main: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: migrated (0.0644s)
main: == [advisory_lock_connection] object_id: 137680, pg_backend_pid: 6605
ci: == [advisory_lock_connection] object_id: 137680, pg_backend_pid: 6609
ci: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: migrating ==
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_ci_cell_local, :gitlab_internal, :gitlab_shared, :gitlab_shared_cell_local, :gitlab_shared_org].
ci: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: migrated (0.0102s)
ci: == [advisory_lock_connection] object_id: 137680, pg_backend_pid: 6609
sec: == [advisory_lock_connection] object_id: 137680, pg_backend_pid: 6614
sec: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: migrating ==
sec: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
sec: -- This database can only apply migrations in one of the following schemas: [:gitlab_internal, :gitlab_sec, :gitlab_shared, :gitlab_shared_cell_local, :gitlab_shared_org].
sec: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: migrated (0.0095s)
sec: == [advisory_lock_connection] object_id: 137680, pg_backend_pid: 6614⬇️ Migration down
$ rails db:migrate:down:main VERSION=20260317110531 && r db:migrate:down:ci VERSION=20260317110531 && r db:migrate:down:sec VERSION=20260317110531
main: == [advisory_lock_connection] object_id: 136840, pg_backend_pid: 5886
main: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: reverting ==
main: -- execute("UPDATE application_settings\nSET rate_limits = jsonb_set(rate_limits, '{virtual_registries_endpoints_api_limit}', '1000')\nWHERE rate_limits->>'virtual_registries_endpoints_api_limit' = '4000'\n")
main: -> 0.0342s
main: == 20260317110531 UpdateVirtualRegistriesEndpointsApiLimitDefault: reverted (0.0448s)
main: == [advisory_lock_connection] object_id: 136840, pg_backend_pid: 5886
ci: == [advisory_lock_connection] object_id: 136860, pg_backend_pid: 6078
ci: == [advisory_lock_connection] object_id: 136860, pg_backend_pid: 6078
sec: == [advisory_lock_connection] object_id: 136860, pg_backend_pid: 6292
sec: == [advisory_lock_connection] object_id: 136860, pg_backend_pid: 6292