diff --git a/synapse/_scripts/update_synapse_database.py b/synapse/_scripts/update_synapse_database.py
index f43676afaa..c443522c05 100755
--- a/synapse/_scripts/update_synapse_database.py
+++ b/synapse/_scripts/update_synapse_database.py
@@ -16,42 +16,47 @@
import argparse
import logging
import sys
+from typing import cast
import yaml
from matrix_common.versionstring import get_distribution_version_string
-from twisted.internet import defer, reactor
+from twisted.internet import defer, reactor as reactor_
from synapse.config.homeserver import HomeServerConfig
from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.server import HomeServer
from synapse.storage import DataStore
+from synapse.types import ISynapseReactor
+# Cast safety: Twisted does some naughty magic which replaces the
+# twisted.internet.reactor module with a Reactor instance at runtime.
+reactor = cast(ISynapseReactor, reactor_)
logger = logging.getLogger("update_database")
class MockHomeserver(HomeServer):
- DATASTORE_CLASS = DataStore
+ DATASTORE_CLASS = DataStore # type: ignore [assignment]
- def __init__(self, config, **kwargs):
+ def __init__(self, config: HomeServerConfig):
super(MockHomeserver, self).__init__(
- config.server.server_name, reactor=reactor, config=config, **kwargs
- )
-
- self.version_string = "Synapse/" + get_distribution_version_string(
- "matrix-synapse"
+ hostname=config.server.server_name,
+ config=config,
+ reactor=reactor,
+ version_string="Synapse/"
+ + get_distribution_version_string("matrix-synapse"),
)
-def run_background_updates(hs):
+def run_background_updates(hs: HomeServer) -> None:
store = hs.get_datastores().main
- async def run_background_updates():
+ async def run_background_updates() -> None:
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():
+ def run() -> None:
# Apply all background updates on the database.
defer.ensureDeferred(
run_as_background_process("background_updates", run_background_updates)
@@ -62,7 +67,7 @@ def run_background_updates(hs):
reactor.run()
-def main():
+def main() -> None:
parser = argparse.ArgumentParser(
description=(
"Updates a synapse database to the latest schema and optionally runs background updates"
@@ -85,12 +90,10 @@ def main():
args = parser.parse_args()
- logging_config = {
- "level": logging.DEBUG if args.v else logging.INFO,
- "format": "%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s",
- }
-
- logging.basicConfig(**logging_config)
+ logging.basicConfig(
+ level=logging.DEBUG if args.v else logging.INFO,
+ format="%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(message)s",
+ )
# Load, process and sanity-check the config.
hs_config = yaml.safe_load(args.database_config)
|