Skip to content

Fix namespace checks for live quota consumption

Marius Bobin requested to merge fix-ci-live-trace-unlimited-minutes-checks into master

What does this MR do?

Related to #339020 (closed) and gitlab-com/gl-infra/production#5396 (closed)

The check Namespace#unlimited_minutes? defined to fix a production incident was not representing the SSOT. Ci::Minutes::Quota#enabled? instead is the SSOT because it considers whether the CI minutes limit is not explicitly set at the namespace level (being NULL) hence defaulting to the Gitlab::CurrentSetting.shared_runners_minutes.

This caused another bug where on gitlab-staging we had namespaces with NULL namespace-level minutes and the condition unlimited_minutes? returned false while it should have been true.

In this MR we fix the bug by moving the check of Ci::Minutes::Quota#enabled? into Ci::Minutes::CostFactor class as per !68599 (comment 655862191). In other words, if a namespace has unlimited minutes, any jobs running in it should have a cost factor of 0, meaning we don't track CI minutes consumption as well as we skip enforcing CI minutes quota.

Screenshots or Screencasts (strongly suggested)

How to setup and validate locally (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Fabio Pitino

Merge request reports