Skip to content

Add exclusive guard to ClusterUpdateAppWorker

Reuben Pereira requested to merge 196243-add-exclusive-guard into master

What does this MR do?

The ClusterUpdateAppWorker calls the Clusters::Applications::PrometheusUpdateService.

If the Clusters::Applications::PrometheusUpdateService is allowed to run multiple times concurrently, it can result in errors caused by multiple helm_api.update statements executing concurrently for the same app. This is because the update works by creating a pod named install-prometheus, which conflicts with any other concurrent update.

The app.make_updating! statement can also result in an error if the application is already in the updating state.

This MR uses the ExclusiveLeaseGuard to ensure that the ClusterUpdateAppWorker cannot be run concurrently for the same app_id.

Issue: #196243 (closed)

Screenshots

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • 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 🤖 GitLab Bot 🤖

Merge request reports