mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 07:23:22 +00:00
The current `get_migration_by_app` has a rather naive approach to compiling the migration status of a realm, which has led to issues like #32826. Specifically, those flaws are: - it does not report the complete state of the migration status of the exporting servers, only the applied migration. - it shows both the replaced and the squashed migrations. This would be a problem if we decide to clean up old migration files we've squashed(replaced) and import a slightly older realm with those still in disk. `check_migration_status` would complain of incompatibility even though those migration files don't matter (they are replaced, after all). - it does not clean up ancient/stale applied migrations (for reference, see how `check-database-compatibility` cleans those) This commit attempts to write a better `migration_status.json` by parsing the output of `showmigrations` instead. This is because Django's `showmigrations` has a lot more logic and validations baked into it than previously thought. Ones that we care about are: - it does validations to make sure app names are valid - it doesn't list replaced migrations and only squashed one - it takes into account migrations in disk(`MigrationsLoader`) vs applied migrations (`MigrationsRecorder`) Which would resolve the first two points highlighted above.
89 KiB
89 KiB