Skip to content

Update ci_pending_builds when trackable attributes are mutated

Max Orefice requested to merge mo-toggle-shared-runners into master

Ref: #335866 (closed)

What does this MR do?

This MR updates Ci::PendingBuild when shared runners is toggled at the project & group level.

It includes the following items:

  • Introduce new module TrackableAttribute
  • Add new service to bulk update ci_pending_builds table at the project and group level
  • Listen to database changes for the following attributes and kicks off service to update ci_pending_builds
    1. shared_runners_enabled for group
    2. shared_runners_enabled for project
    3. pending_delete for project
    4. builds_access_level for project

Why are we doing this?

When working on denormalization shared runners data to ci_pending_builds in !64644 (merged), it was brought up that we need to make sure to update our new denormalized column to ensure data consistency.

This MR takes care of it and add this new feature behind a feature flag ci_pending_builds_maintain_shared_runners_data.

Note: Alternatively we could use postgresql triggers as discovered in this MR

Does this MR meet the acceptance criteria?

Conformity

Edited by Max Orefice

Merge request reports