Signed-off-by: Nick Barrett <nick@beeper.com>tags/v1.45.0rc1
@@ -25,7 +25,7 @@ python -m synapse.app.homeserver --generate-keys -c .ci/sqlite-config.yaml | |||||
echo "--- Prepare test database" | echo "--- Prepare test database" | ||||
# Make sure the SQLite3 database is using the latest schema and has no pending background update. | # Make sure the SQLite3 database is using the latest schema and has no pending background update. | ||||
scripts-dev/update_database --database-config .ci/sqlite-config.yaml | |||||
scripts/update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates | |||||
# Create the PostgreSQL database. | # Create the PostgreSQL database. | ||||
.ci/scripts/postgres_exec.py "CREATE DATABASE synapse" | .ci/scripts/postgres_exec.py "CREATE DATABASE synapse" | ||||
@@ -46,7 +46,7 @@ echo "--- Prepare empty SQLite database" | |||||
# we do this by deleting the sqlite db, and then doing the same again. | # we do this by deleting the sqlite db, and then doing the same again. | ||||
rm .ci/test_db.db | rm .ci/test_db.db | ||||
scripts-dev/update_database --database-config .ci/sqlite-config.yaml | |||||
scripts/update_synapse_database --database-config .ci/sqlite-config.yaml --run-background-updates | |||||
# re-create the PostgreSQL database. | # re-create the PostgreSQL database. | ||||
.ci/scripts/postgres_exec.py \ | .ci/scripts/postgres_exec.py \ | ||||
@@ -0,0 +1 @@ | |||||
Include an `update_synapse_database` script in the distribution. Contributed by @Fizzadar at Beeper. |
@@ -1,3 +1,10 @@ | |||||
matrix-synapse-py3 (1.44.0~rc2+nmu1) UNRELEASED; urgency=medium | |||||
[ Nick @ Beeper ] | |||||
* Include an `update_synapse_database` script in the distribution. | |||||
-- root <root@f7b8a71098d3> Mon, 04 Oct 2021 13:29:26 +0000 | |||||
matrix-synapse-py3 (1.44.0) stable; urgency=medium | matrix-synapse-py3 (1.44.0) stable; urgency=medium | ||||
* New synapse release 1.44.0. | * New synapse release 1.44.0. | ||||
@@ -3,3 +3,4 @@ opt/venvs/matrix-synapse/bin/register_new_matrix_user usr/bin/register_new_matri | |||||
opt/venvs/matrix-synapse/bin/synapse_port_db usr/bin/synapse_port_db | opt/venvs/matrix-synapse/bin/synapse_port_db usr/bin/synapse_port_db | ||||
opt/venvs/matrix-synapse/bin/synapse_review_recent_signups usr/bin/synapse_review_recent_signups | opt/venvs/matrix-synapse/bin/synapse_review_recent_signups usr/bin/synapse_review_recent_signups | ||||
opt/venvs/matrix-synapse/bin/synctl usr/bin/synctl | opt/venvs/matrix-synapse/bin/synctl usr/bin/synctl | ||||
opt/venvs/matrix-synapse/bin/update_synapse_database usr/bin/update_synapse_database |
@@ -90,10 +90,10 @@ else | |||||
"scripts/hash_password" | "scripts/hash_password" | ||||
"scripts/register_new_matrix_user" | "scripts/register_new_matrix_user" | ||||
"scripts/synapse_port_db" | "scripts/synapse_port_db" | ||||
"scripts/update_synapse_database" | |||||
"scripts-dev" | "scripts-dev" | ||||
"scripts-dev/build_debian_packages" | "scripts-dev/build_debian_packages" | ||||
"scripts-dev/sign_json" | "scripts-dev/sign_json" | ||||
"scripts-dev/update_database" | |||||
"contrib" "synctl" "setup.py" "synmark" "stubs" ".ci" | "contrib" "synctl" "setup.py" "synmark" "stubs" ".ci" | ||||
) | ) | ||||
fi | fi | ||||
@@ -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. | # Make sure the SQLite3 database is using the latest schema and has no pending background update. | ||||
echo "Running db background jobs..." | 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. | # Create the PostgreSQL database. | ||||
echo "Creating postgres database..." | echo "Creating postgres database..." | ||||
@@ -42,10 +42,29 @@ class MockHomeserver(HomeServer): | |||||
self.version_string = "Synapse/" + get_version_string(synapse) | 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( | parser = argparse.ArgumentParser( | ||||
description=( | 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." | " on it." | ||||
) | ) | ||||
) | ) | ||||
@@ -54,7 +73,13 @@ if __name__ == "__main__": | |||||
"--database-config", | "--database-config", | ||||
type=argparse.FileType("r"), | type=argparse.FileType("r"), | ||||
required=True, | 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() | args = parser.parse_args() | ||||
@@ -82,19 +107,10 @@ if __name__ == "__main__": | |||||
# Setup instantiates the store within the homeserver object and updates the | # Setup instantiates the store within the homeserver object and updates the | ||||
# DB. | # DB. | ||||
hs.setup() | 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() |
@@ -41,10 +41,10 @@ lint_targets = | |||||
scripts/hash_password | scripts/hash_password | ||||
scripts/register_new_matrix_user | scripts/register_new_matrix_user | ||||
scripts/synapse_port_db | scripts/synapse_port_db | ||||
scripts/update_synapse_database | |||||
scripts-dev | scripts-dev | ||||
scripts-dev/build_debian_packages | scripts-dev/build_debian_packages | ||||
scripts-dev/sign_json | scripts-dev/sign_json | ||||
scripts-dev/update_database | |||||
stubs | stubs | ||||
contrib | contrib | ||||
synctl | synctl | ||||