summary refs log tree commit diff
path: root/synapse/storage/prepare_database.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-11-05 11:12:10 +0000
committerGitHub <noreply@github.com>2021-11-05 11:12:10 +0000
commita37df1b091c3cc9c5549243ef02c4f2a9d90bd16 (patch)
tree58e6a5b44b652e0f620eeb03da24418ac0cea2d5 /synapse/storage/prepare_database.py
parentMake minor correction to type of auth_checkers callbacks (#11253) (diff)
downloadsynapse-a37df1b091c3cc9c5549243ef02c4f2a9d90bd16.tar.xz
Fix rolling back when using workers (#11255)
Fixes #11252
Diffstat (limited to 'synapse/storage/prepare_database.py')
-rw-r--r--synapse/storage/prepare_database.py23
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)