Skip to content

Update trial and opensource pipeline_triggers plan limits to 25k

Leaminn Ma requested to merge update-pipeline-triggers-plan-limits into master

What does this MR do and why?

As seen in #350577 (closed), the limits for pipeline_triggers are not consistent across all plans for GitLab.com. This is because either new plans were introduced or the limits were not migrated when the plan names were updated. This MR adds a migration to update the non-paid plans (opensource and trials) to 25k.

We confirmed in #350577 (comment 1791881087) that customers under the relevant plans are all well under 25k. We also have a confirmation to proceed with this change here.

Partially resolves #350577 (closed).

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.

Query plan

Up

main: == [advisory_lock_connection] object_id: 119340, pg_backend_pid: 19443
main: == 20240226191235 UpdatePipelineTriggersPlanLimits: migrating =================
main: -- quote_column_name("pipeline_triggers")
main:    -> 0.0000s
main: -- quote("premium_trial")
main:    -> 0.0000s
main: -- quote(25000)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"pipeline_triggers\")\nSELECT id, '25000' FROM plans WHERE name = 'premium_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"pipeline_triggers\" = EXCLUDED.\"pipeline_triggers\";\n")
main:    -> 0.0033s
main: -- quote_column_name("pipeline_triggers")
main:    -> 0.0000s
main: -- quote("ultimate_trial")
main:    -> 0.0000s
main: -- quote(25000)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"pipeline_triggers\")\nSELECT id, '25000' FROM plans WHERE name = 'ultimate_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"pipeline_triggers\" = EXCLUDED.\"pipeline_triggers\";\n")
main:    -> 0.0004s
main: -- quote_column_name("pipeline_triggers")
main:    -> 0.0000s
main: -- quote("opensource")
main:    -> 0.0000s
main: -- quote(25000)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"pipeline_triggers\")\nSELECT id, '25000' FROM plans WHERE name = 'opensource' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"pipeline_triggers\" = EXCLUDED.\"pipeline_triggers\";\n")
main:    -> 0.0005s
main: == 20240226191235 UpdatePipelineTriggersPlanLimits: migrated (0.0075s) ========

main: == [advisory_lock_connection] object_id: 119340, pg_backend_pid: 19443
ci: == [advisory_lock_connection] object_id: 119540, pg_backend_pid: 19445
ci: == 20240226191235 UpdatePipelineTriggersPlanLimits: 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_internal, :gitlab_shared].
ci: == 20240226191235 UpdatePipelineTriggersPlanLimits: migrated (0.0078s) ========

ci: == [advisory_lock_connection] object_id: 119540, pg_backend_pid: 19445

Down

main: == [advisory_lock_connection] object_id: 119040, pg_backend_pid: 21586
main: == 20240226191235 UpdatePipelineTriggersPlanLimits: reverting =================
main: -- quote_column_name("pipeline_triggers")
main:    -> 0.0000s
main: -- quote("premium_trial")
main:    -> 0.0000s
main: -- quote(0)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"pipeline_triggers\")\nSELECT id, '0' FROM plans WHERE name = 'premium_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"pipeline_triggers\" = EXCLUDED.\"pipeline_triggers\";\n")
main:    -> 0.0012s
main: -- quote_column_name("pipeline_triggers")
main:    -> 0.0000s
main: -- quote("ultimate_trial")
main:    -> 0.0000s
main: -- quote(0)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"pipeline_triggers\")\nSELECT id, '0' FROM plans WHERE name = 'ultimate_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"pipeline_triggers\" = EXCLUDED.\"pipeline_triggers\";\n")
main:    -> 0.0004s
main: -- quote_column_name("pipeline_triggers")
main:    -> 0.0000s
main: -- quote("opensource")
main:    -> 0.0000s
main: -- quote(0)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"pipeline_triggers\")\nSELECT id, '0' FROM plans WHERE name = 'opensource' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"pipeline_triggers\" = EXCLUDED.\"pipeline_triggers\";\n")
main:    -> 0.0003s
main: == 20240226191235 UpdatePipelineTriggersPlanLimits: reverted (0.0056s) ========

main: == [advisory_lock_connection] object_id: 119040, pg_backend_pid: 21586
ci: == [advisory_lock_connection] object_id: 118980, pg_backend_pid: 22007
ci: == 20240226191235 UpdatePipelineTriggersPlanLimits: reverting =================
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_internal, :gitlab_shared].
ci: == 20240226191235 UpdatePipelineTriggersPlanLimits: reverted (0.0093s) ========

ci: == [advisory_lock_connection] object_id: 118980, pg_backend_pid: 22007

Related to #350577 (closed)

Edited by Leaminn Ma

Merge request reports