• Yorick Peterse's avatar
    Run background migrations with a minimum interval · 78ae895a
    Yorick Peterse authored
    This adds a minimum interval to BackgroundMigrationWorker, ensuring
    background migrations of the same class only run once every 5 minutes.
    This prevents a thundering herd problem where scheduled migrations all
    run at once due to their delays having been expired (e.g. as the result
    of a queue being paused for a long time).
    
    If a job was recently executed it's rescheduled with a delay that equals
    the remaining time of the job's lease. This means that if the lease
    expires in two minutes we only need to wait two minutes, instead of
    five.
    
    Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/41624
    78ae895a
background_migration_worker_spec.rb 807 Bytes