diff --git a/scripts-dev/lint.sh b/scripts-dev/lint.sh
index 809eff166a..b6554a73c1 100755
--- a/scripts-dev/lint.sh
+++ b/scripts-dev/lint.sh
@@ -90,10 +90,10 @@ else
"scripts/hash_password"
"scripts/register_new_matrix_user"
"scripts/synapse_port_db"
+ "scripts/update_synapse_database"
"scripts-dev"
"scripts-dev/build_debian_packages"
"scripts-dev/sign_json"
- "scripts-dev/update_database"
"contrib" "synctl" "setup.py" "synmark" "stubs" ".ci"
)
fi
diff --git a/scripts-dev/make_full_schema.sh b/scripts-dev/make_full_schema.sh
index 39bf30d258..c3c90f4ec6 100755
--- a/scripts-dev/make_full_schema.sh
+++ b/scripts-dev/make_full_schema.sh
@@ -147,7 +147,7 @@ python -m synapse.app.homeserver --generate-keys -c "$SQLITE_CONFIG"
# Make sure the SQLite3 database is using the latest schema and has no pending background update.
echo "Running db background jobs..."
-scripts-dev/update_database --database-config "$SQLITE_CONFIG"
+scripts/update_synapse_database --database-config --run-background-updates "$SQLITE_CONFIG"
# Create the PostgreSQL database.
echo "Creating postgres database..."
diff --git a/scripts-dev/update_database b/scripts/update_synapse_database
index 87f709b6ed..26b29b0b45 100755
--- a/scripts-dev/update_database
+++ b/scripts/update_synapse_database
@@ -42,10 +42,29 @@ class MockHomeserver(HomeServer):
self.version_string = "Synapse/" + get_version_string(synapse)
-if __name__ == "__main__":
+def run_background_updates(hs):
+ store = hs.get_datastore()
+
+ async def run_background_updates():
+ await store.db_pool.updates.run_background_updates(sleep=False)
+ # Stop the reactor to exit the script once every background update is run.
+ reactor.stop()
+
+ def run():
+ # Apply all background updates on the database.
+ defer.ensureDeferred(
+ run_as_background_process("background_updates", run_background_updates)
+ )
+
+ reactor.callWhenRunning(run)
+
+ reactor.run()
+
+
+def main():
parser = argparse.ArgumentParser(
description=(
- "Updates a synapse database to the latest schema and runs background updates"
+ "Updates a synapse database to the latest schema and optionally runs background updates"
" on it."
)
)
@@ -54,7 +73,13 @@ if __name__ == "__main__":
"--database-config",
type=argparse.FileType("r"),
required=True,
- help="A database config file for either a SQLite3 database or a PostgreSQL one.",
+ help="Synapse configuration file, giving the details of the database to be updated",
+ )
+ parser.add_argument(
+ "--run-background-updates",
+ action="store_true",
+ required=False,
+ help="run background updates after upgrading the database schema",
)
args = parser.parse_args()
@@ -82,19 +107,10 @@ if __name__ == "__main__":
# Setup instantiates the store within the homeserver object and updates the
# DB.
hs.setup()
- store = hs.get_datastore()
- async def run_background_updates():
- await store.db_pool.updates.run_background_updates(sleep=False)
- # Stop the reactor to exit the script once every background update is run.
- reactor.stop()
+ if args.run_background_updates:
+ run_background_updates(hs)
- def run():
- # Apply all background updates on the database.
- defer.ensureDeferred(
- run_as_background_process("background_updates", run_background_updates)
- )
- reactor.callWhenRunning(run)
-
- reactor.run()
+if __name__ == "__main__":
+ main()
|