diff options
author | Erik Johnston <erik@matrix.org> | 2021-11-05 11:12:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-05 11:12:10 +0000 |
commit | a37df1b091c3cc9c5549243ef02c4f2a9d90bd16 (patch) | |
tree | 58e6a5b44b652e0f620eeb03da24418ac0cea2d5 /synapse/storage | |
parent | Make minor correction to type of auth_checkers callbacks (#11253) (diff) | |
download | synapse-a37df1b091c3cc9c5549243ef02c4f2a9d90bd16.tar.xz |
Fix rolling back when using workers (#11255)
Fixes #11252
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/prepare_database.py | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/synapse/storage/prepare_database.py b/synapse/storage/prepare_database.py index 1629d2a53c..b5c1c14ee3 100644 --- a/synapse/storage/prepare_database.py +++ b/synapse/storage/prepare_database.py @@ -133,22 +133,23 @@ def prepare_database( # if it's a worker app, refuse to upgrade the database, to avoid multiple # workers doing it at once. - if ( - config.worker.worker_app is not None - and version_info.current_version != SCHEMA_VERSION - ): + if config.worker.worker_app is None: + _upgrade_existing_database( + cur, + version_info, + database_engine, + config, + databases=databases, + ) + elif version_info.current_version < SCHEMA_VERSION: + # If the DB is on an older version than we expect the we refuse + # to start the worker (as the main process needs to run first to + # update the schema). raise UpgradeDatabaseException( OUTDATED_SCHEMA_ON_WORKER_ERROR % (SCHEMA_VERSION, version_info.current_version) ) - _upgrade_existing_database( - cur, - version_info, - database_engine, - config, - databases=databases, - ) else: logger.info("%r: Initialising new database", databases) |