Can you upgrade Discourse seamlessly if there is a breaking db change?

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…