Commit 99151296 authored by Dylan Griffith's avatar Dylan Griffith Committed by Mike Jang

Add some Elasticsearch migration docs about version compatibility

These extra details are important for developers to keep in mind when
making future migrations.
parent 4228bd99
...@@ -242,6 +242,27 @@ class BatchedMigrationName < Elastic::Migration ...@@ -242,6 +242,27 @@ class BatchedMigrationName < Elastic::Migration
end end
``` ```
### Multi-version compatibility
These Elasticsearch migrations, like any other GitLab changes, need to support the case where
[multiple versions of the application are running at the same time](multi_version_compatibility.md).
Depending on the order of deployment, it's possible that the migration
has started or finished and there's still a server running the application code from before the
migration. We need to take this into consideration until we can [ensure all Elasticsearch migrations
start after the deployment has finished](https://gitlab.com/gitlab-org/gitlab/-/issues/321619).
### Reverting a migration
Because Elasticsearch does not support transactions, we always need to design our
migrations to accommodate a situation where the application
code is reverted after the migration has started or after it is finished.
For this reason we generally defer destructive actions (for example, deletions after
some data is moved) to a later merge request after the migrations have
completed successfully. To be safe, for self-managed customers we should also
defer it to another release if there is risk of important data loss.
## Performance Monitoring ## Performance Monitoring
### Prometheus ### Prometheus
......
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