Skip to content

Update rake tasks to have multi-db versions

Patrick Bair requested to merge pb-multi-db-rake-tasks into master

What does this MR do and why?

Update rake task mark_migration_complete to support multiple databases. Related to #352770 (closed)

If only a single database is configured, you should only see the singular rake task gitlab:db:mark_migration_complete.

If multiple databases are configured, you should see:

rake -T gitlab:db:mark_migration_complete
rake gitlab:db:mark_migration_complete[version]       # GitLab | DB | Manually insert schema migration version
rake gitlab:db:mark_migration_complete:ci[version]    # Gitlab | DB | Manually insert schema migration version on ci database
rake gitlab:db:mark_migration_complete:main[version]  # Gitlab | DB | Manually insert schema migration version on main database

How to set up and validate locally

If you have a multi-database setup, you can test the individual tasks:

  1. Against main only:
    # rails gitlab:db:mark_migration_complete:main\[20220201120000\]
    Successfully marked '20220201120000' as complete on database main
    
    psql# select count(*) from schema_migrations where version = '20220201120000'; -- on main
     count
    -------
         1
  2. Against ci only:
    # GITLAB_USE_MODEL_LOAD_BALANCING=true rails gitlab:db:mark_migration_complete:ci\[20220201120000\]
    Successfully marked '20220201120000' as complete on database ci
    
    psql# select count(*) from schema_migrations where version = '20220201120000'; -- on ci
     count
    -------
         1
  3. Against all databases:
    # GITLAB_USE_MODEL_LOAD_BALANCING=true rails gitlab:db:mark_migration_complete\[20220201120001\]
    Successfully marked '20220201120001' as complete on database main
    Successfully marked '20220201120001' as complete on database ci
    
    psql# select count(*) from schema_migrations where version = '20220201120001'; -- on main and ci both
     count
    -------
         1

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Patrick Bair

Merge request reports

Loading