Well… you could use a semantic versioning scheme for the schema versions:
- If the migration updates the major version, all workers must be taken down,
- if it updates the minor version, workers on the old version must be in read-only mode,
- and if only the patch version changes, workers can keep running throughout the migration.
If someone wants to maintain a huge Discourse cluster, they’ll know how to perform the upgrade, assuming that they have a custom tool that orchestrates all the launchers on the machines involved…