Make delete members API rate limit configurable
What does this MR do and why?
In !118296 (merged), we rate limited the delete member API but the limit for too low for some self-managed users. So here we're making it configurable.
We have also introduced a JSONB
column here to store all the application settings in a single column so we can move all the rate limit columns to a single column. See Move rate limits to application_settings.rate_l... (#423404).
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Screenshots or screen recordings
Migration output
up
bin/rails db:migrate
main: == [advisory_lock_connection] object_id: 183100, pg_backend_pid: 78758
main: == 20240110085226 AddRateLimitsToApplicationSettings: migrating ===============
main: -- add_column(:application_settings, :rate_limits, :jsonb, {:default=>{}, :null=>false})
main: -> 0.0031s
main: == 20240110085226 AddRateLimitsToApplicationSettings: migrated (0.0062s) ======
main: == [advisory_lock_connection] object_id: 183100, pg_backend_pid: 78758
ci: == [advisory_lock_connection] object_id: 183400, pg_backend_pid: 78760
ci: == 20240110085226 AddRateLimitsToApplicationSettings: migrating ===============
ci: -- add_column(:application_settings, :rate_limits, :jsonb, {:default=>{}, :null=>false})
ci: -> 0.0041s
ci: == 20240110085226 AddRateLimitsToApplicationSettings: migrated (0.0143s) ======
ci: == [advisory_lock_connection] object_id: 183400, pg_backend_pid: 78760
down
VERSION=20240110085226 bin/rails db:rollback:main && bin/rails db:rollback:ci
main: == [advisory_lock_connection] object_id: 182680, pg_backend_pid: 77890
main: == 20240110085226 AddRateLimitsToApplicationSettings: reverting ===============
main: -- remove_column(:application_settings, :rate_limits, :jsonb, {:default=>{}, :null=>false})
main: -> 0.0027s
main: == 20240110085226 AddRateLimitsToApplicationSettings: reverted (0.0077s) ======
main: == [advisory_lock_connection] object_id: 182680, pg_backend_pid: 77890
ci: == [advisory_lock_connection] object_id: 182620, pg_backend_pid: 78323
ci: == 20240110085226 AddRateLimitsToApplicationSettings: reverting ===============
ci: -- remove_column(:application_settings, :rate_limits, :jsonb, {:default=>{}, :null=>false})
ci: -> 0.0031s
ci: == 20240110085226 AddRateLimitsToApplicationSettings: reverted (0.0145s) ======
ci: == [advisory_lock_connection] object_id: 182620, pg_backend_pid: 78323
How to set up and validate locally
- Follow the steps given in the doc added in this MR
doc/administration/settings/rate_limit_on_members_api.md
. - Updating the rate limit should update the application settings value:
ApplicationSetting.last.members_delete_limit
. - Check the
ApplicationSetting.last.members_delete_limit
value in the rails console.
Related to #420321 (closed)
Edited by Abdul Wadood