Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Add --run-background-updates option to update_database script. #10954

Merged
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .ci/scripts/test_synapse_port_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ python -m synapse.app.homeserver --generate-keys -c .ci/sqlite-config.yaml
echo "--- Prepare test database"

# 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.
.ci/scripts/postgres_exec.py "CREATE DATABASE synapse"
Expand All @@ -46,7 +46,7 @@ echo "--- Prepare empty SQLite database"
# we do this by deleting the sqlite db, and then doing the same again.
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.
.ci/scripts/postgres_exec.py \
Expand Down
1 change: 1 addition & 0 deletions changelog.d/10954.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Include an `update_synapse_database` script in the distribution. Contributed by @Fizzadar at Beeper.
7 changes: 7 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -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

* New synapse release 1.44.0.
Expand Down
1 change: 1 addition & 0 deletions debian/matrix-synapse-py3.links
Original file line number Diff line number Diff line change
Expand Up @@ -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_review_recent_signups usr/bin/synapse_review_recent_signups
opt/venvs/matrix-synapse/bin/synctl usr/bin/synctl
opt/venvs/matrix-synapse/bin/update_synapse_database usr/bin/update_synapse_database
2 changes: 1 addition & 1 deletion scripts-dev/lint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion scripts-dev/make_full_schema.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo here: --run-background-updates should come at the end. (Argparse thinks we've forgotten to specify a value for --database-config). Will fix as part of #13715.


# Create the PostgreSQL database.
echo "Creating postgres database..."
Expand Down
48 changes: 32 additions & 16 deletions scripts-dev/update_database → scripts/update_synapse_database
Original file line number Diff line number Diff line change
Expand Up @@ -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."
)
)
Expand All @@ -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()
Expand Down Expand Up @@ -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()
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ lint_targets =
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
stubs
contrib
synctl
Expand Down