Add `--run-background-updates` option to `update_database` script. (#10954)
Signed-off-by: Nick Barrett <nick@beeper.com>pull/11004/head
parent
f8d0f72b27
commit
c80878d22a
|
@ -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():
|
if args.run_background_updates:
|
||||||
await store.db_pool.updates.run_background_updates(sleep=False)
|
run_background_updates(hs)
|
||||||
# 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)
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
reactor.run()
|
|
2
tox.ini
2
tox.ini
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue