Gitlab::Namespaces::UpdateService shared_runners_minutes_limit not supported for this namespace
Provision failure label
~"provision failure::shared_runners_minutes_limit update not supported for namespace"
Provision https://customers.gitlab.com/admin/provision/107530 failed due to Gitlab::Namespaces::UpdateService get shared_runners_minutes_limit is not supported for this namespace
error from Gitlab API response
Problem
Provision record: https://customers.gitlab.com/admin/provision/107530+ GitLab incident issue: https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/9092+
When provision Zuora order https://www.zuora.com/orders#/view/O-00187329 (for Zuora subscription https://www.zuora.com/platform/subscriptions/8a128eab8e5bcecf018e6375d71d0741), Gitlab::Namespaces::UpdateService get shared_runners_minutes_limit is not supported for this namespace
error from Gitlab API response.
BTW: Gitlab::Namespaces::UpdateService is called by UpdatePlanInfoService.
The production error log
Log link(only valid for 30 days): https://console.cloud.google.com/logs/query;cursorTimestamp=2024-03-22T00:01:06.165Z;endTime=2024-03-24T05:26:09.000Z;query=%221408104%22%0Aseverity%3E%3DERROR%0Atimestamp%3D%222024-03-22T00:01:06.165Z%22%0AinsertId%3D%221y7fmb5e6gek7%22;startTime=2024-03-21T05:26:09.000Z?project=gitlab-subscriptions-prod
{
"insertId": "1y7fmb5e6gek7",
"jsonPayload": {
"namespace_id": "1408104",
"hostname": "10.185.6.2",
"stage": "main",
"progname": null,
"correlation_id": "72323545d35e9d9a23fa4d54e70b8091",
"class": "Gitlab::Namespaces::UpdateService",
"fqdn": "customers.gitlab.com",
"attrs": {
"additional_purchased_storage_ends_on": "2025-03-22",
"plan": null,
"shared_runners_minutes_limit": 400,
"additional_purchased_storage_size": 10240
},
"errors": "",
"path": null,
"shard": "default",
"params": null,
"message": "#<RuntimeError: Error updating namespace 1408104 with params {:plan=>nil, :shared_runners_minutes_limit=>400, :additional_purchased_storage_size=>10240, :additional_purchased_storage_ends_on=>Sat, 22 Mar 2025}: \"{\\\"message\\\":{\\\"shared_runners_minutes_limit\\\":[\\\"is not supported for this namespace\\\"]}}\">",
"type": "customersdot",
"tier": "sv",
"error": "#<RuntimeError: Error updating namespace 1408104 with params {:plan=>nil, :shared_runners_minutes_limit=>400, :additional_purchased_storage_size=>10240, :additional_purchased_storage_ends_on=>Sat, 22 Mar 2025}: \"{\\\"message\\\":{\\\"shared_runners_minutes_limit\\\":[\\\"is not supported for this namespace\\\"]}}\">",
"environment": "gprd"
},
"resource": {
"type": "gce_instance",
"labels": {
"zone": "us-east1-c",
"project_id": "gitlab-subscriptions-prod",
"instance_id": "4522658887268460484"
}
},
"timestamp": "2024-03-22T00:01:06.165Z",
"severity": "ERROR",
"labels": {
"tag": "rails.production",
"compute.googleapis.com/resource_name": "customers-01-inf-prdsub"
},
"logName": "projects/gitlab-subscriptions-prod/logs/rails.production",
"receiveTimestamp": "2024-03-22T00:01:12.709533950Z"
}
It turns out gitlab namespace has a validation to check the shared_runners_minutes_limit is not changed.
def validate_shared_runner_minutes_support
return if root?
if shared_runners_minutes_limit_changed?
errors.add(:shared_runners_minutes_limit, 'is not supported for this namespace')
end
end
However I am not sure:
- the reason why this validation is needed
- whether we need to update the ParamsGenerator for shared_runners_minutes_limit in CustomersDot?
Proposal
No proposal yet. Need investigation to find the solution.