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_limit default value to 4000
  • 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
Edited by Dzmitry (Dima) Meshcharakou

Merge request reports

Loading
Loading