Match dotenv variable limits across subscription plans
What does this MR do and why?
In https://gitlab.com/gitlab-org/gitlab/-/blob/931c9f3c133c09209fc8f7a41e1642fe30cb2de7/db/migrate/20211105161404_insert_dotenv_application_limits.rb we failed to update all the plans that are in use on .com so we ended up with plans that are paid but have lower limits than the namespaces that are currently on the free plan:
gitlabhq_production=> select name, dotenv_size, dotenv_variables from plan_limits inner join plans on plan_limits.plan_id = plans.id;
name | dotenv_size | dotenv_variables
----------------+-------------+------------------
early_adopter | 5120 | 20
bronze | 5120 | 20
silver | 5120 | 20
gold | 5120 | 20
free | 5120 | 50
default | 5120 | 150
premium | 5120 | 100
ultimate | 5120 | 150
ultimate_trial | 5120 | 150
premium_trial | 5120 | 100
opensource | 5120 | 150
(11 rows)
Related to #357270 (closed) and #357447 (closed)
This should help unblock !70798 (comment 892564947)
Screenshots or screen recordings
$ bin/rails db:migrate
== 20220421144758 ChangeDotenvPlanLimitsForOldPlans: migrating ================
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("early_adopter")
-> 0.0000s
-- quote(50)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '50' FROM plans WHERE name = 'early_adopter' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0035s
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("bronze")
-> 0.0000s
-- quote(50)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '50' FROM plans WHERE name = 'bronze' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0021s
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("silver")
-> 0.0000s
-- quote(100)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '100' FROM plans WHERE name = 'silver' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0010s
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("gold")
-> 0.0000s
-- quote(150)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '150' FROM plans WHERE name = 'gold' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0010s
== 20220421144758 ChangeDotenvPlanLimitsForOldPlans: migrated (0.0082s) =======
-- Current migration is skipped since it modifies '[:gitlab_main]' which is outside of '[:gitlab_ci, :gitlab_shared]'
$ bin/rails db:rollback:main
== 20220421144758 ChangeDotenvPlanLimitsForOldPlans: reverting ================
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("early_adopter")
-> 0.0000s
-- quote(20)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '20' FROM plans WHERE name = 'early_adopter' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0035s
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("bronze")
-> 0.0000s
-- quote(20)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '20' FROM plans WHERE name = 'bronze' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0013s
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("silver")
-> 0.0000s
-- quote(20)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '20' FROM plans WHERE name = 'silver' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0009s
-- quote_column_name("dotenv_variables")
-> 0.0000s
-- quote("gold")
-> 0.0000s
-- quote(20)
-> 0.0000s
-- execute("INSERT INTO plan_limits (plan_id, \"dotenv_variables\")\nSELECT id, '20' FROM plans WHERE name = 'gold' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"dotenv_variables\" = EXCLUDED.\"dotenv_variables\";\n")
-> 0.0011s
== 20220421144758 ChangeDotenvPlanLimitsForOldPlans: reverted (0.0073s) =======
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Marius Bobin