Allow custom predicate to steal BG jobs
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
- [-] Changelog entry
- [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides - [-] Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
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