Commit 433b6fed authored by Grzegorz Bizon's avatar Grzegorz Bizon

Copy-edit background migrations guidelines

parent 367a8955
...@@ -40,7 +40,7 @@ and idempotent. ...@@ -40,7 +40,7 @@ and idempotent.
See [Sidekiq best practices guidelines](https://github.com/mperham/sidekiq/wiki/Best-Practices) See [Sidekiq best practices guidelines](https://github.com/mperham/sidekiq/wiki/Best-Practices)
for more details. for more details.
Make sure that in case that your migration job is going to be retried a data Make sure that in case that your migration job is going to be retried data
integrity is guarateed. integrity is guarateed.
## How It Works ## How It Works
...@@ -227,18 +227,24 @@ the `services.properties` column. ...@@ -227,18 +227,24 @@ the `services.properties` column.
## Testing ## Testing
It is possible to test a background migrations scheduling migration and a It is required to write tests for background migrations' scheduling migration
cleanup migration using `:migration` RSpec tag. See README in specs/migration/ (either a regular migration or a post deployment migration), background
directory. migration itself and a cleanup migration. You can use the `:migration` RSpec
tag when testing a regular / post deployment migration.
See [README][migrations-readme].
When you do that, keep in mind that `before` and `after` RSpec hooks are going When you do that, keep in mind that `before` and `after` RSpec hooks are going
to migrate you database down and up, which can result in another background to migrate you database down and up, which can result in other background
migrations being called. That means that using `spy` test doubles with migrations being called. That means that using `spy` test doubles with
`have_received` is encouraged, instead of using regular test doubles, because `have_received` is encouraged, instead of using regular test doubles, because
your expectation defined in a `it` block can conflict with what is being your expectations defined in a `it` block can conflict with what is being
called in RSpec hooks. See gitlab-org/gitlab-ce#35351 for more details. called in RSpec hooks. See [gitlab-org/gitlab-ce#35351][issue-rspec-hooks]
for more details.
## Best practices ## Best practices
1. Make sure that background migration jobs are idempotent. 1. Make sure that background migration jobs are idempotent.
1. Make sure that tests you write are not false positives. 1. Make sure that tests you write are not false positives.
[migrations-readme]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/spec/migrations/README.md
[issue-rspec-hooks]: https://gitlab.com/gitlab-org/gitlab-ce/issues/35351
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment