Skip to content

Allow custom predicate to steal BG jobs

Patrick Bair requested to merge custom-logic-to-steal-background-jobs into master

What does this MR do?

Issue #218428 (closed) implements a generic BackgroundMigration that is used to copy data between a table and its partitioned copy. Typically when a BackgroundMigration is released, the following release includes a cleanup migration that synchronously processes remaining background jobs, and cleans up remaining data. The migration cleanup logic for partitioning migrations is implemented generically in !35201 (merged).

The BackgroundMigration.steal method is used to synchronously process remaining jobs in a cleanup migration. However, this method selects jobs to process based on the class name. Since the job class implemented for partitioning is generic, selecting jobs based on class name is not granular enough.

This MR implements a change that allows the steal method to accept a block, which is called with the arguments for the job. The steal method processes any job for which the block returns true.

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